iPhone:使用带有Tabview控制器和导航控制器的Singleton

时间:2010-05-04 05:07:01

标签: iphone singleton uinavigationcontroller uitabbarcontroller

我使用单例来开发一个小型iPhone应用程序,用于浏览视图。这是我的单身类的示例方法。

+ (void) loadMenuController:(NSMutableArray *)menuItems{
     MenuViewController *menuViewControler = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
     [menuViewControler setMenuItems:menuItems];
     RootViewController *root = (
     P2MAppDelegate *appDelegate = (P2MAppDelegate*) [[UIApplication sharedApplication] delegate];
     UINavigationController *navController = [appDelegate navigationController];
     [navController pushViewController:menuViewControler animated:YES]; 
     [menuViewControler release];
}

现在我的要求已更改为需要标签视图控制器。我可以将我的应用程序委托更改为tabview控制器,但我仍然需要在每个选项卡中导航。我无法弄清楚如何从我的单例类导航。

请指导我。如果我的查询不清楚,请告诉我。

提前致谢。

此致 Malleswar

1 个答案:

答案 0 :(得分:0)

您不应该使用单例来管理界面,即使您这样做,也不会将UI逻辑放在类方法中。您需要从头开始重新考虑您的设计。

正常模式是将导航控制器或标签栏控制器作为应用程序委托的属性。 app委托本身不应该是任何控制器的子类,而只是实现应用程序委托协议的NSObject子类。

查看Apple提供的Xcode模板项目,了解构建围绕导航和/或标签构建的应用程序的快速而肮脏的方法。

只有当您必须确保一个且只有一个类实例同时存在时,才应使用单身人士。您不需要制作自己的单例来管理UI。应用程序委托附加到应用程序对象,该对象本身是单例。这意味着app delegate为您可能需要的UI提供了类的所有限制。除此之外,您不需要另外的单例。

过度使用单身是危险的,可能会导致您的设计陷入死胡同,导致大量重写。在使用之前要仔细考虑。