2010-12-14 97 views
2

我的应用程序有一个选项卡视图控制器作为主要接入点。 但是,当它第一次运行时,我需要检查一些基本数据,如果缺少这些数据,我需要先显示一个视图来捕获这些信息。选项卡视图中的表格使用此信息来显示数据。如何让父视图知道子视图已被删除 - iphone

我这样做的方式是这样的: 在我的应用程序委托中,我显示了选项卡视图。 然后检查信息x。如果不存在,请添加子视图2并将其显示在顶部。 在view2中,我捕获这些信息,然后点击一个按钮将它从superview中移除。所需数据存储在模型的全局变量中。 现在,控件返回显示它的选项卡视图。 问题是我需要在选项卡视图中重新加载表格数据,以便它反映正确的信息。但是,我无法在我的父级选项卡视图中捕获此信息。所以,我可以刷新的唯一方法是通过手动点击一个不理想的按钮。我希望它在子视图从堆栈中移除后立即自动刷新。

回答

4

一个很好的方法是让模型在添加新数据时发布通知。您的表格视图控制器可以侦听该通知,并在收到该通知时可以重新加载其数据。

查看苹果对Posting a NotificationRegistering for a Notification的解释。

+0

什么快速的答案!已经实现了它,并得到它的工作! - 谢谢 – user542584 2010-12-14 22:02:55

1

一种方法是继承父视图并覆盖willRemoveSubview :.这是在视图从其超级视图中移除之前调用的。

6

注册和呼叫通知是要走的路。

对于要发送通知的观点:

- (void) viewDidLoad { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateView:) name:@"updateView" object:nil]; 
} 

- (void)updateView:(NSNotification *)notification { 
    /* this is where the updates will take place, 
     such as a [tableView reloadData]; 
    */ 
} 

,并呼吁该通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateView" object:nil]; 
+0

谢谢你的示例代码 - 不能投票,因为这是我的第一篇文章。 :(但是感谢你的帮助 – user542584 2010-12-14 22:07:32

+0

你可以用复选标记来标记我的答案,就像upvote一样好; D – WrightsCS 2010-12-14 22:09:12

+0

试图用复选标记标记多个答案,但它只允许一个答案:(我给复选标记回答以前的答案因为它第一次,实际上给了我解决方案。下次:) ..但是谢谢! – user542584 2010-12-14 22:13:11