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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top