目标C:如何重新分配导航控制器的代码

时间:2011-06-12 08:16:09

标签: objective-c ios uinavigationcontroller

我有一个使用UITabBarController的应用程序,其中包含4个不同的导航控制器。例如,
1)“Feed”视图导航控制器
2)“最受欢迎”视图导航控制器
3)“新闻”视图导航控制器
4)“更多”视图导航控制器

对于每个导航控制器,可能会有一些常见的视图控制器需要被推送到现有的堆栈上。例如,如果我点击“Feed”和“新闻”视图控制器中显示的用户个人资料图片,他们应该将userProfile视图控件推送到他们的堆栈上。

目前我看到自己在不同的导航控制器中重复这样的代码:

UserProfileViewController  *user = [[UserProfileViewController alloc]init];
user.propertyA = XXX;
user.propertyB = YYY;
[self.navigationController pushViewController:user animated:YES];

我担心这会变得过于重复和混乱,特别是你有多个导航控制器。

我的问题是如何对代码进行重新分解,以便所有导航控制器在每次需要加载公共视图控制器时都不需要重复代码。

提前致谢

1 个答案:

答案 0 :(得分:1)

在UserProfileViewController上创建一个静态选择器,如下所示:

@interface UserProfileViewController {
...
}

+ (void)pushNewUserProfileViewControllerWithPropertyA:(id)pa 
         propertyB:(id)pb     
         ontoNavigationController:(UINavigationController*)nav;

@end

并在其实现中放置了您的问题中的这四行代码,但请确保自动释放创建的UserProfileViewController。