사용자가 제공 한 문자열로 UitableView에 행을 추가하는 가장 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1607743

  •  05-07-2019
  •  | 
  •  

문제

나는 간단합니다 UITableViewController 안에 UINavigationController 내비게이션 막대의 오른쪽에 기본 편집/완료 버튼이있는 배열에서 문자열 목록이 표시됩니다.

편집 버튼을 누를 때 UITableView 애니메이션을 올바르게 애니메이션하고 삭제할 빨간 마이너스 아이콘이 표시됩니다. 삭제 버튼을 누르면 테이블 뷰와 배열에서 행이 제거됩니다 ( tableView:commitEditingStyle:forRowAtIndexPath: 방법의 방법 UITableViewController).

이제 사용자가 뷰에 행을 추가하고 (기본 배열에 문자열을 추가) 허용하지만, 어떻게 해야할지 잘 모르겠습니다. CommiteditingStyle 방법은 있습니다 else if (editingStyle == UITableViewCellEditingStyleInsert), 그러나 사용자가 문자열을 입력 할 수있는 방법을 모르겠습니다.

테이블 뷰 프로그래밍 안내서를 읽었습니다 (보다 구체적으로 테이블 뷰 행을 추가하는 예),하지만 이것은 완전히 새로운 것을 필요로하는 것 같습니다. UIViewController 사용자로부터 문자열을 얻기 위해 서브 클래스.

더 쉬운 방법이 없습니까?

도움이 되었습니까?

해결책

다른보기 컨트롤러를 만드는 것은 아마도 장기적으로 가장 쉬운 방법 일 것입니다. 당신은 전화를 통해 그것을 모드로 제시 할 수 있습니다

SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];

TheViewController가 사라질 준비가되면 전화 할 수 있습니다.

[[self parentViewController] dismissModalViewControllerAnimated: YES];

또는 새 뷰 컨트롤러에 대한 프로토콜을 설정하여 원래보기 컨트롤러에 완료를 알리고 값을 다시 보낼 수 있습니다.

@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end

MyViewController는 대의원을 갖습니다

@interface MyViewController
{
    id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end

프로토콜 메소드를 사용하는 경우 원래보기 컨트롤러는 해당 프로토콜을 채택 하고이 메시지를 수신 할 때 모달보기 자체를 기각합니다.

나는 그것이 도움이되기를 바랍니다. 처음에는 조금 복잡해 보일 수 있지만 데이터 수집을 매우 쉽게 만듭니다.

다른 팁

uialertview 또는 유사한 클래스를 직접 사용할 수 있습니다. 모달보기를 팝업하여 문자열을 요청하고 오른쪽 콜백을 설정 한 다음 데이터 소스에 팝업하십시오.

UitextView와 "Tap to Edit"자리 표시자가있는 셀을 삽입 한 다음 TextView Callbacks에서 TextView를 제거하고 문자열을 표시 할 수도 있습니다. 추가 편집은 드릴 다운하거나 다른 일을해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top