Ios 向UItableview添加行并在ViewController之间传递数据

Ios 向UItableview添加行并在ViewController之间传递数据,ios,objective-c,iphone,uitableview,Ios,Objective C,Iphone,Uitableview,我在plist中有一个网站列表,当应用程序加载时,它会填充一个tableview(位于导航控制器内) 但我在导航栏上添加了一个添加按钮,然后创建了另一个视图控制器来处理新网站的输入(如标题和URL)。这与contacts应用程序的外观非常相似。有一个表视图,当您点击add时,add UI向上滑动。到目前为止,我已经把这一切都做好了 我的问题是当用户点击“完成”时会发生什么。 我可以将网站添加到plist(每个网站都是plist中的一个字典,有2个键,atm) 但是,我该如何告诉tableView

我在plist中有一个网站列表,当应用程序加载时,它会填充一个tableview(位于导航控制器内)

但我在导航栏上添加了一个添加按钮,然后创建了另一个视图控制器来处理新网站的输入(如标题和URL)。这与contacts应用程序的外观非常相似。有一个表视图,当您点击add时,add UI向上滑动。到目前为止,我已经把这一切都做好了

我的问题是当用户点击“完成”时会发生什么。 我可以将网站添加到plist(每个网站都是plist中的一个字典,有2个键,atm) 但是,我该如何告诉tableView进行更新呢?尚未从主窗口中删除表视图,只是在“屏幕”顶部添加了添加视图

另一种询问方式是,当您点击“添加联系人”屏幕上的“保存”时:(不是我的图像)


(来源:)


新联系人的数据(Xyz的数据)如何显示在tableview上?

您可以使用
NSNotificationCentre
通知其他视图。只需让tableViewController侦听正确的
NSNotification
,并做出相应的响应即可

初始化tableViewController时:

[myNSNotificationCentre addObserver:self selector:@selector(updateWithContactDictionary:) name:@"ContactAdded" object:theOtherViewController];
当您在另一个视图控制器中添加联系人时:

[myNSNotificationCentre postNotificationName:@"ContactAdded" object:self userInfo:userInfoStoredInAnNSDictionary];

然后,只要添加一个条目,表就会立即更新自身。

使用通知是一个很好的解决方案


另一个常用于iPhone应用程序的方法是将原始表视图作为“添加”视图控制器的委托(通常以模式显示),并让视图控制器对其委托调用约定的方法,这将调用
reloadData
并取消一个模态控制器-从逻辑上讲,最好从首先呈现它的对象开始执行。

好的,一个来自苹果的人在CS193P斯坦福课程上讲过,他是使用委托来完成的,所以我认为这是最好的方法。