使用用户提供的字符串在UITableView中添加行的最简单方法是什么?

时间:2009-10-22 14:43:11

标签: iphone uitableview

我在UITableViewController中有一个简单的UINavigationController,它会显示一个数组中的字符串列表,并在导航栏的右侧显示默认的编辑/完成按钮。

按下“编辑”按钮时,UITableView会正确设置动画并显示要删除的红色减号图标。按删除按钮可删除表视图和数组中的行(在tableView:commitEditingStyle:forRowAtIndexPath:的{​​{1}}方法中实现)。

我现在想让用户在视图中添加一行(并将字符串添加到底层数组中),但我不知道如何去做。 commitEditingStyle方法有UITableViewController,但我不知道如何让用户输入字符串。

我已经阅读了“表视图编程指南”(更具体地说是the example of adding a table-view row),但这似乎需要一个全新的else if (editingStyle == UITableViewCellEditingStyleInsert)子类来获取用户的字符串。

有没有更简单的方法?

2 个答案:

答案 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并显示字符串。进一步编辑需要向下钻取或做其他事情