代码之家  ›  专栏  ›  技术社区  ›  Ben S

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

  •  1
  • Ben S  · 技术社区  · 15 年前

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

    按下编辑按钮时, UITableView 正确设置动画并显示要删除的红色负号图标。按“删除”按钮将从表视图和数组中删除行(在 tableView:commitEditingStyle:forRowAtIndexPath: 方法 表格控制器 )

    现在我想允许用户向视图中添加一行(并将字符串添加到基础数组中),但我不确定如何执行此操作。CommittedIntingStyle方法具有 else if (editingStyle == UITableViewCellEditingStyleInsert) 但我不知道如何让用户输入字符串。

    我已经阅读了表视图编程指南(更具体地说 the example of adding a table-view row 但这似乎需要一个全新的 UIViewController 子类只是从用户那里获取一个字符串。

    有没有更容易的方法?

    2 回复  |  直到 15 年前
        1
  •  2
  •   jessecurry    15 年前

    从长远来看,创建另一个视图控制器可能是最简单的方法。您可以通过拨打

    SomeViewController* theViewController = [[SomeViewController alloc] init];
    [self presentModalViewController: theViewController animated: YES];
    [theViewController release];
    

    当视图控制器准备离开时,它可以调用

    [[self parentViewController] dismissModalViewControllerAnimated: YES];
    

    或 您可以为新的视图控制器设置一个协议,这样它就可以通知原始的视图控制器完成操作,并返回一个值,如果您希望返回NSstring,则可以使用

    @protocol MyViewControllerDelegate
    - (void)myViewControllerDelegate: (MyViewController*)myViewController didFinishWithValue: (NSString*)theString;
    @end
    

    然后,MyViewController将具有委托属性

    @interface MyViewController
    {
        id<MyViewControllerDelegate> delegate;
    }
    @property(nonatomic,assign) id<MyViewControllerDelegate> delegate;
    @end
    

    如果使用协议方法,则原始视图控制器将采用该协议,并在收到此消息时关闭模式视图本身。

    我希望这有助于解决这个问题,一开始它可能看起来有点复杂,但它使收集数据变得非常容易。

        2
  •  0
  •   coneybeare    15 年前

    您可以自己使用uiAlertView或类似的类。只需弹出模式视图来请求字符串,建立正确的回调,然后将其弹出到数据源中。

    您还可以插入带有uitextview和“点击可编辑”占位符的单元格,然后在textview回调上,删除textview并显示字符串。进一步的编辑需要向下钻取或执行其他操作