我正在尝试基于单击模态视图中的按钮(一个人正在选择一个选项)来更改splitview控制器中的视图。我正在使用通知来完成此任务:
在模态视图中单击按钮时,它会发出通知,然后关闭(解散)自身:
[[NSNotificationCenter defaultCenter] postNotificationName:@“launchProject”object:nil];
拆分视图控制器内的DetailViewController正在侦听此通知,并在SVC中切换视图
-(void)launchProject:(NSNotification *)notification { Project* secondDetail2 = [[Project alloc] initWithNibName:nil bundle:nil]; ProjectRootController* secondRoot2 = [[ProjectRootController alloc] initWithNibName:nil bundle:nil ]; self.splitViewController.viewControllers =[NSArray arrayWithObjects: secondRoot2, secondDetail2 , nil]; }
我不明白为什么意见没有改变。对此有任何建议都会受到欢迎。
答案 0 :(得分:0)
你没有显示所有代码,所以我猜这个问题是对通知如何工作的误解。它最初可能令人困惑,但它非常简单。到目前为止,你有:
[[NSNotificationCenter defaultCenter] postNotificationName:@"launchProject" object:nil]
这很好。
但你还需要
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(launchProject:) // selector should be your function name, launchProject
name:@"launchProject" // notification name - must be same as what is given to postNotificatioName.
object: nil];
某处,就像在init
函数中一样。
换句话说,postNotificationName:@"launchProject"
不会调用函数launchProject。它会将名为“launchProject”的通知放入NSNotificationCenter defaultCenter
。如果你不是在寻找那个特定的通知,那么什么都不会发生。
希望有所帮助..