在表视图iOS 6+中插入行

时间:2013-11-02 21:41:18

标签: ios uitableview uiviewcontroller

所以我看过一些有关如何执行此操作的教程,但实际上它们都涉及硬编码按钮和文本字段。我所做的是创建了一个视图控制器A,带有嵌入式表视图。在导航栏中,我添加了一个按钮(“添加”)加上符号按钮。这个按钮我已经采取行动,以模态方式调出另一个视图控制器B,其中我有一个文本字段和一个按钮Save

以下是供参考的图片: enter image description here

所以我想做的是让用户能够按下视图控制器A中的绿色加号按钮,然后它将调出视图控制器B,我可以在其中输入用户名,按保存,它将自行解除(我知道如何执行此操作)并再次显示A,但现在显示新添加的联系人。

我正在使用NSMutableArray来存储和填充表。我可以做到这一点的最简单,最简单的方法是什么,而不必像Apple docs Table View Programming Guide中所示那样硬编码按钮。我有两个单独的类A我有Contacts类,而B我已将其指定为addContact类。这两个类都只是视图控制器的子类。

2 个答案:

答案 0 :(得分:0)

首先,我会推送第二个视图,而不是以模态方式呈现它。 对于Segue(第一个和第二个视图之间的连接器),您还可以附加标识符。

https://developer.apple.com/library/ios/recipes/xcode_help-interface_builder/articles-storyboard/StoryboardSegue.html

此外,您可以在推送视图之前在prepareForSegue方法中执行某些操作。 在这个方法中,我将传递数组和tableview,这样你可以添加用户名并在按下保存按钮时重新加载表。

http://nscookbook.com/2013/01/ios-programming-recipe-5-passing-values-between-segues-with-prepareforsegue/

答案 1 :(得分:0)

您的问题的范围不是很清楚,但假设您知道如何将保存的值传递回父视图控制器,您将使用以下内容插入表格行:

- (void)addItem:(id)item { // where item is the object being added to the data model
    [self.items addObject:item]; // where self.items is your mutable array
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.items.count - 1 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
}

insertRowsAtIndexPaths:withRowAnimation:方法通知表视图您已在给定索引路径处向数据模型添加新项目,然后它将调用您的数据源方法(包括cellForRowAtIndexPath)以生成新细胞并将其动画到位。