使用用户提供的字符串在UITableView中添加行的最简单方法是什么?
-
05-07-2019 - |
题
我在 UINavigationController
中有一个简单的 UITableViewController
,它显示了一个数组中的字符串列表,并在导航的右侧显示了默认的Edit / Done按钮杆
按下编辑按钮时, UITableView
会正确设置动画并显示要删除的红色减号图标。按删除按钮将删除表视图和数组中的行(在 UITableViewController
的 tableView:commitEditingStyle:forRowAtIndexPath:
方法中实现)。
我现在想让用户在视图中添加一行(并将字符串添加到底层数组中),但我不知道如何去做。 commitEditingStyle方法有 else if(editingStyle == UITableViewCellEditingStyleInsert)
,但我不知道如何让用户输入字符串。
我已阅读“表格视图编程指南”(更具体地说,添加表视图行的示例),但这似乎需要一个全新的 UIViewController
子类只是为了从用户那里获取一个字符串。
有没有更简单的方法?
解决方案
从长远来看,创建另一个视图控制器可能是最简单的方法。您可以通过调用
以模态方式呈现它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
如果使用协议方法,原始视图控制器将采用该协议,并在收到此消息时将自动关闭模态视图。
我希望这有所帮助,起初看起来有点复杂,但它使收集数据非常容易。
其他提示
您可以自己使用UIAlertView或类似课程。只需弹出模态视图来请求字符串,建立正确的回调,然后将其弹出数据源。
您还可以插入带有UITextView和“点击编辑”的单元格。占位符,然后在textView Callbacks上,删除textView并显示字符串。进一步编辑需要向下钻取或做其他事情