ユーザー指定の文字列を使用してUITableViewに行を追加する最も簡単な方法は何ですか?
-
05-07-2019 - |
質問
UINavigationController
にシンプルな UITableViewController
があり、ナビゲーションの右側にデフォルトの[編集/完了]ボタンがある配列の文字列のリストを表示しますバー。
[編集]ボタンを押すと、 UITableView
が正しくアニメーション化され、削除する赤いマイナスアイコンが表示されます。削除ボタンを押すと、テーブルビューと配列から行が削除されます( UITableViewController
の tableView:commitEditingStyle:forRowAtIndexPath:
メソッドで実装されます)。
これで、ユーザーがビューに行を追加できるようにしたい(そして、基礎となる配列に文字列を追加したい)が、どうすればよいかわからない。 commitEditingStyleメソッドには else if(editingStyle == UITableViewCellEditingStyleInsert)
がありますが、ユーザーに文字列を入力させる方法はわかりません。
「Table View Programming Guide」を読みました(より具体的にはテーブルビュー行を追加する例)が、これにはまったく新しい UIViewController
が必要なようですユーザーから文字列を取得するためのサブクラス。
これより簡単な方法はありませんか?
解決
別のView Controllerを作成することが、長期的にはおそらく最も簡単な方法になるでしょう。呼び出してモーダルで表示できます
SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];
theViewControllerを終了する準備ができたら、呼び出すことができます
[[self parentViewController] dismissModalViewControllerAnimated: YES];
OR NSViewを使用したい場合は、元のView Controllerに完了を通知して値を返送できるように、新しいView Controllerのプロトコルを設定できます
@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end
MyViewControllerにはデリゲートプロパティがあります
@interface MyViewController
{
id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end
プロトコルメソッドを使用する場合、元のView Controllerはそのプロトコルを採用し、このメッセージを受信するとモーダルビュー自体を閉じます。
お役に立てば幸いです。最初は少し複雑に見えるかもしれませんが、データの収集が非常に簡単になります。
他のヒント
UIAlertViewまたは同様のクラスを自分で使用できます。モーダルビューをポップアップして文字列を要求し、正しいコールバックを確立してから、dataSourceにポップします。
UITextViewと「編集するタップ」を使用してセルを挿入することもできます。プレースホルダー、次にtextViewコールバックで、textViewを削除して文字列を表示します。さらに編集するには、ドリルダウンするか、他の操作を行う必要があります