在我的项目中我只有一个窗口,在那个窗口中我只有一个自定义视图,仅此而已。在该自定义视图中,我正在加载一个默认视图,而在该默认视图中,我在那里有一个 Button。当执行该按钮 IBAction 时,必须离开当前的自定义视图,并且必须在该窗口的同一自定义视图中加载新视图。
对于这些我尝试这样,我的应用程序委托是我的窗口控制器,因为我声明了一个全局变量并编写了 KVO 来观察它的值何时发生变化。在那种观察方法中,我试图根据我的要求基于该全局变量中的值加载不同的 xib(自定义视图)。
除了这些,我还有不同的 ViewController 来控制不同的视图。在该视图控制器类中,我使用 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");
}
控制从 ViewController 类移动到 AppDelegate 并且它也进入了该 KVO 方法,它正在执行我希望它执行的每一行。但它不影响输出结果。
据我所知,它通过使用 AppDelegate 的对象来执行 ViewController 类本身的所有事情。所以它不影响在该窗口中加载 CustomView 中的视图。
任何人都请建议我一些解决这些问题的解决方案......