我有一个iOS应用程序,它有一个mainControllerView,在那里我创建了一个UINavigationController,然后我将UINavController推入一个名为FirstViewController的新UIViewController,以及其他视图。
总之是这样的:
MainController(UIVIewController)
|
--> UINavController
|
--> FirstViewController(UIViewController)
|
--> SecondViewController(UIViewController)
|
--> AddViewController
此外,在FirstViewController内部我有一个UITableView,UITableView由CoreData提供。
现在,我决定在(NavigationBar的)右上角添加一个“加”系统按钮,将另一行添加到数据库中,因此应该反映到UITableview中。
我所做的是创建另一个自定义视图,名为AddViewController,当我按下“加号”按钮时,它会被推入NavController堆栈。在那个视图中,我刚刚添加了一些文本字段和一个按钮来更新数据库,这是有效的,但是,当我按下时,我找不到更新UITableView的方法,这是在FirstViewController中。
再简而言之,
UINavController(with FirstViewController)
1.-When I press the "+" button another UIViewController (AddViewContronller)
is pushed
2.-In that view I present a few UITextfields to be filled.
3.-I press a "save" button on the NavigationBar, that button save info
into the DB and then it goes back the FirstViewController, popping the current
UIViewController(AddViewController)
4.-FirstViewController and its tableView is on the main screen again, however
the rows are still the same.
当我按下AddViewController中的保存按钮时,我一直在尝试更新FirstViewController,但正如我所说,我一直没有成功。
我没试过的选项是当我跳到另一个UIViewController然后在后面重新分配时释放FirstViewController但是我不认为这是一个好主意因为使用NavigationController我可以跟踪我的所有视图控制器进入堆栈。
所以任何人都知道如何刷新/重新加载来自另一个UIViewController的View(UIViewController),在我的例子中从AddViewController更新FirstViewController视图?
另外,我想听听我是否走在正确的轨道上?或者我想要做什么可以通过另一种方法,如模态对话框轻松完成?
任何帮助都会非常感激
欢呼声, 劳尔
答案 0 :(得分:1)
您可以尝试处理NSManagedObjectContextObjectsDidChangeNotification通知。例如:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataDidChange)
name:NSManagedObjectContextObjectsDidChangeNotification
object:nil];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSManagedObjectContextObjectsDidChangeNotification
object:nil];
}
- (void)dataDidChange {
[self.tableView reloadData];
}
答案 1 :(得分:0)
首先,如果您不熟悉UITableView
,请阅读Table View Programming Guide for iOS。
如果您使用核心数据填充UITableView
,您几乎总是应该使用NSFetchedResultsController
。