ユーザー指定の文字列を使用してUITableViewに行を追加する最も簡単な方法は何ですか?

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

  •  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を削除して文字列を表示します。さらに編集するには、ドリルダウンするか、他の操作を行う必要があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top