在我的项目中,我只有一个窗口,在该窗口中我只有一个自定义视图,除此之外别无其他。在该自定义视图中,我正在加载一个默认视图,在该默认视图中,我有一个Button。执行该按钮IBAction时,必须显示当前自定义视图,并且必须在该窗口的同一自定义视图中加载新视图。
对于这些我试过这样的, 我的app委托是我的窗口控制器,因为我声明了一个全局变量并为其观察写了KVO,当它的值被改变时。在那个观察方法中,我试图根据我在全局变量中的值的要求加载不同的xib(自定义视图)。
除了这些,我还有不同的ViewControllers来控制不同的视图。在该视图控制器类中,我通过使用AppDelegate类的对象将新值加载到该全局变量中。
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"entered into key value observing");
if ([viewName isEqualToString:@"LoginView"]) {
NSLog(@"Dont change the current view");
} else {
NSLog(@"Load new view in customView");
[self loadNewView];
}
}
-(void)loadNewView
{
NSLog(@"entered into login in method");
[[_viewController view] removeFromSuperview];
_viewController=[[NSViewController alloc] initWithNibName:@"NewView" bundle:nil];
[self.window setContentSize:_viewController.view.frame.size];
[_customView addSubview:[_viewController view]];
NSLog(@"at final step");
}
Control正在从ViewController类移动到AppDelegate,并且它也进入了那个KVO方法,它正在执行我希望它执行的每一行。但它不会影响输出结果。
据我所知,它正在使用AppDelegate的对象执行ViewController类本身的每一件事。因此,它不影响在该窗口中的CustomView中加载视图。
任何人都可以建议我解决这些问题的解决方案........
答案 0 :(得分:0)
问题不在上面问题中显示的代码中。
在上面的NSViewController代码实例中,为了同样的目的,一次又一次地创建。与此同时尝试使用共享实例在ViewController类中创建appDeligate的对象。