我在UITableViewController
中有一个简单的UINavigationController
,它会显示一个数组中的字符串列表,并在导航栏的右侧显示默认的编辑/完成按钮。
按下“编辑”按钮时,UITableView
会正确设置动画并显示要删除的红色减号图标。按删除按钮可删除表视图和数组中的行(在tableView:commitEditingStyle:forRowAtIndexPath:
的{{1}}方法中实现)。
我现在想让用户在视图中添加一行(并将字符串添加到底层数组中),但我不知道如何去做。 commitEditingStyle方法有UITableViewController
,但我不知道如何让用户输入字符串。
我已经阅读了“表视图编程指南”(更具体地说是the example of adding a table-view row),但这似乎需要一个全新的else if (editingStyle == UITableViewCellEditingStyleInsert)
子类来获取用户的字符串。
有没有更简单的方法?
答案 0 :(得分:2)
从长远来看,创建另一个视图控制器可能是最简单的方法。您可以通过调用
以模态方式呈现它SomeViewController* theViewController = [[SomeViewController alloc] init];
[self presentModalViewController: theViewController animated: YES];
[theViewController release];
当theViewController准备离开时,它可以调用
[[self parentViewController] dismissModalViewControllerAnimated: YES];
OR 你可以为你的新视图控制器设置一个协议,这样它就可以通知你的原始视图控制器完成并发回一个值,如果你想要一个NSString,你可以使用
@protocol MyViewControllerDelegate
- (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
@end
然后,MyViewController将具有委托属性
@interface MyViewController
{
id<MyViewControllerDelegate> delegate;
}
@property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
@end
如果使用协议方法,原始视图控制器将采用该协议,并在收到此消息时将自动关闭模态视图。
我希望有所帮助,起初看起来有点复杂,但它使得收集数据非常容易。
答案 1 :(得分:0)
您可以自己使用UIAlertView或类似课程。只需弹出模态视图来请求字符串,建立正确的回调,然后将其弹出数据源。
您还可以插入带有UITextView和“Tap to Edit”占位符的单元格,然后在textView Callbacks上删除textView并显示字符串。进一步编辑需要向下钻取或做其他事情