根据目前做过的这些项目总结一下app的框架搭建,不能以偏概全,还是要根据项目负责人的构思和需求结合灵活搭建的。
我们其中一个代表性的项目结构是这样的,就针对这样子的app来总结一下架子搭建。
1、思想上,采用模块化+MVC思想;
2、代码上,采用纯代码搭建;
吐槽一下后来合作的新人 小鲜肉们,为何总喜欢用故事版做项目,个人感觉太不灵活了,代码不好控制,一切不在掌握之中,不推荐使用。
3、骨架结构:
tabBarController底部的切换条,
NavigationController顶部的导航条;
ViewController中间展示内容的各个页面;
4、整合关系:
tabBarController作为整个项目架子的控制者,每个子控制器是一个NavigationController,NavigationController的root View是ViewController。
5、目录:
不足之处 或者有更优方案的欢迎指正教导。
6、上代码:
AppDelegate里面写入口:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
SCTabBarViewController *sCTabBarViewController = [[SCTabBarViewController alloc] init];
self.sCTabBarVC = sCTabBarViewController;
self.window.rootViewController = self.sCTabBarVC;
[self.window makeKeyAndVisible];
return YES;
}
新建SCTabBarViewController和CTBaseNavigationController,在里面写你们的自定义配置之类的代码:
主要代码:
- (void)viewDidLoad {
[super viewDidLoad];
// 添加子控制器
[self addChildVc:[[HomeTableViewController alloc] init] title:@"首页" image:@"home_normal" selectedImage:@"home_select"];
[self addChildVc:[[MainShoppingViewController alloc] init] title:@"商城"
image:@"shopping_normal" selectedImage:@"shopping_selected"];
[self addChildVc:[[DiscoverViewController alloc] init] title:@"发现"
image:@"FriendsTrend_normal" selectedImage:@"FriendsTrend_select"];
[self addChildVc:[[MyViewController alloc] init] title:@"我的" image:@"My_normal" selectedImage:@"My_select"];
}
/**
* 添加一个子控制器
*
* @param childVc 子控制器
* @param title 标题
* @param image 默认的图片
* @param selectedImage 选中的图片
*/
- (void)addChildVc:(UIViewController *)childVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage {
// 设置文字和图片
childVc.navigationItem.title = title;
childVc.tabBarItem.title = title;
childVc.tabBarItem.image = [UIImage imageNamed:image];
childVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// 包装一个导航控制器, 添加导航控制器为tabbarcontroller的子控制器
CTBaseNavigationController *nav = [[CTBaseNavigationController alloc] initWithRootViewController:childVc titleSize:18 titleColor:[UIColor colorWithRed:253.0/255 green:144.0/255 blue:15.0/255 alpha:1] leftBackBarNormalImage:@"navigationbar_back"highImage:@"navigationbar_back"];
// 添加为子控制器
[self addChildViewController:nav];
}
这个是随便写了一下,很小白,希望大牛来指导一下。我想问一嘴,做一个项目,到底有没有必要创建基类呢?