1

我正在阅读文档以了解如何在表格视图中添加一行,我发现了这个例子:

- (void)save:sender {

    UITextField *textField = [(EditableTableViewTextField *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]] textField];

    SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSString *newItem = textField.text;

    if (newItem != nil) {
        [controller insertObject:newItem inListAtIndex:[controller countOfList]];
    }

    [self dismissModalViewControllerAnimated:YES];

}

我不明白该方法:insertObject:inListAtIndex:[[UIApplication sharedApplication] delegate];代表什么;我们是否将数据放入 plist 文件中?有人可以向我解释一下吗?文档并没有真正的帮助。UIApplication

4

2 回答 2

2

[[UIApplication sharedApplication] delegate]是主应用程序委托,通常这是一个名为AppDelegate. 主应用程序委托是在应用程序启动时创建的,它是应用程序的主控制器。

我将假设您正在使用与此类类似的东西作为您的AppDelegate课程。

[controller insertObject:newItem inListAtIndex:[controller countOfList]];

这假定您的AppDelegate类有一个命名的方法insertObject:inListAtIndex:。对于我链接的类,该方法如下所示:

- (void)insertObject:(id)obj inListAtIndex:(NSUInteger)theIndex {
    [list insertObject:obj atIndex:theIndex];
}

所以在这种情况下,该方法是将对象添加到您的AppDelegate类的成员变量中,称为List.

于 2012-04-04T19:42:51.743 回答
0

与 plist 没有任何联系。只需在代表的帮助下进行消息交换即可更改表格视图。

来自苹果文档:

当表格视图进入编辑模式并且用户单击编辑控件时,表格视图会向其数据源和委托发送一系列消息,但前提是它们实现了这些方法。这些方法允许数据源和委托细化表格视图中行的外观和行为;这些消息还使它们能够执行删除或插入操作。

阅读:http: //developer.apple.com/library/ios/#documentation/userexperience/conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html

和最好的书之一 - 开始 iphone 4(或 5)

于 2012-04-04T19:14:51.690 回答