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

iPhone:使用带有Tabview控制器和导航控制器的Singleton,iphone,singleton,uinavigationcontroller,uitabbarcontroller,Iphone,Singleton,Uinavigationcontroller,Uitabbarcontroller,我使用singleton开发了一个小型iPhone应用程序,我使用它在视图中导航。这是我的singleton类中的一个示例方法 + (void) loadMenuController:(NSMutableArray *)menuItems{ MenuViewController *menuViewControler = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];

我使用singleton开发了一个小型iPhone应用程序,我使用它在视图中导航。这是我的singleton类中的一个示例方法

+ (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控制器,但仍需要在每个选项卡内导航。我无法从我的singleton类中获得如何导航的线索

请引导我。如果我的问题不清楚,请告诉我

提前谢谢

问候,,
Malleswar

您不应该使用单例来管理接口,即使使用了单例,也不会将UI逻辑放在类方法中。你需要从头开始重新思考你的设计

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

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

只有当您必须确保一次只有一个类实例处于活动状态时,才应该使用单例。您不需要创建自己的单例来管理UI。应用程序委托附加到应用程序对象,该对象本身是一个单例。这意味着应用程序委托为您可能需要的UI提供了所有类限制。除此之外,你不需要另一个单身汉


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

为清楚起见,请重新格式化。另外,“单身”是一个词。谢谢你的回复。描述得真不错。实际上,为了访问web服务,我使用了基于事件的服务访问。与didReceiveResponse、didReceiveData、ConnectiondFinishLoading类似。当它到达ConnectionIDFinishLoading时,我访问单吨级并显示下一个控制器。您能给我推荐其他访问webservice的方法吗?这样我就可以避免访问singleton类中的控制器了。提前感谢。是的,请使用将收到响应完成通知的代理。但我不想等到ConnectionIDFinishLoading。它基于事件。我只想为请求调用一个方法,该方法应该返回响应。