无法在splitviewcontroller中更改视图

时间:2011-01-20 18:32:05

标签: cocoa-touch uisplitviewcontroller

我正在尝试基于单击模态视图中的按钮(一个人正在选择一个选项)来更改splitview控制器中的视图。我正在使用通知来完成此任务:

  1. 在模态视图中单击按钮时,它会发出通知,然后关闭(解散)自身:

    [[NSNotificationCenter defaultCenter] postNotificationName:@“launchProject”object:nil];

  2. 拆分视图控制器内的DetailViewController正在侦听此通知,并在SVC中切换视图

  3. -(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];
    
    }
    

    我不明白为什么意见没有改变。对此有任何建议都会受到欢迎。

1 个答案:

答案 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。如果你不是在寻找那个特定的通知,那么什么都不会发生。

希望有所帮助..