你好stackoverflowers
我有一个设计问题。
我有一个 MainMenuViewController 类。它有一个在应用程序右侧显示菜单的方法。这个方法是从应用程序的不同部分调用的,实际上,在每个导航控制器中,我必须将该方法设置为导航栏右键的目标。
这导致我在每个推送的视图控制器中都有这样的代码:
UIViewController *root = [self.navigationController.viewControllers objectAtIndex:0];
[self.topBarMenuButton addTarget:((RecordsViewController*)root).mainMenuController action:@selector(launchMenu:) forControlEvents: UIControlEventTouchUpInside];
而且我必须给每个根控制器一个对主菜单的引用。
我一点也不喜欢。我想要的是这样的:
[self.topBarMenuButton addTarget:[MainMenuController sharedInstance] action:@selector(launchMenu:) forControlEvents: UIControlEventTouchUpInside];
因此,应用程序的每个视图控制器都可以访问主菜单,而无需从其根视图控制器或应用程序委托中获取它。
这是一个好主意吗?对我来说这听起来不错,但我不确定使用共享视图控制器实例是否有任何缺点。
感谢和快乐的编码