사용자가 제공 한 문자열로 UitableView에 행을 추가하는 가장 쉬운 방법은 무엇입니까?
-
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를 제거하고 문자열을 표시 할 수도 있습니다. 추가 편집은 드릴 다운하거나 다른 일을해야합니다.