一·项目创建
二·创建自己的专属BasicViewController
删掉自带的ViewController,并且分别创建Main ViewController View Model
三·实现Screen的Delegate方法
代码语言:javascript复制- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
[self initUI];
}
四·创建基础框架
属性:
代码语言:javascript复制@interface SceneDelegate ()<UITabBarControllerDelegate>
@property (nonatomic, strong)PersonalViewController *personalVC; //我的
@property (nonatomic, strong)SuperMainViewController *homePageMainVC; //主页
@property (nonatomic, strong)UITabBarController *tab; //tabbar栏
@property (nonatomic, strong)UINavigationController *nav;
@end
由于我想实现一个底部tabbar栏切换不覆盖的视图所以是以一个NavigationViewController作为RootWindow
代码语言:javascript复制- (void)initUI {
[self tab]; //懒加载
[self nav]; //懒加载
self.nav = [[UINavigationController alloc]initWithRootViewController:self.tab]; //根视图
[self.tab setViewControllers:@[self.homePageMainVC,self.personalVC]]; //底部Tabbar栏个数
self.tab.delegate = self;
self.window.rootViewController = self.nav; //根VC
[self.window makeKeyAndVisible]; //可视化
}
懒加载
代码语言:javascript复制- (UITabBarController *)tab {
if (!_tab) {
_tab = [[UITabBarController alloc]init];
}
return _tab;
}
- (UINavigationController *)nav {
if (!_nav) {
_nav = [[UINavigationController alloc]init];
}
return _nav;
}
五·MVC
在上一步中分别有SuperMainViewController,PersonalViewController 这里拿PersonalViewControllerVC来做例子
注意新建的VC必须继承自自己创建的BasicViewController 因为这样以来就可以管理并控制整个App的生命周期
代码语言:javascript复制#import <UIKit/UIKit.h>
#import "BasicViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface MainViewController : BasicViewController
@end
代码语言:javascript复制@interface MainViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) FirstView *firstView;
@end
根据MVC的概念可以知道Model层负责数据传递,但是没有说明的一个重要的地方就是Model在哪里传递!
这里拿tableView做例子
因为我遵循了UITableViewDataSource,UITableViewDelegate
所以必须实现其中一个方法
代码语言:javascript复制- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"id"];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"id"];
}
YourModel *model = _dataArr[indexPath.row];
cell.model = model;
cell.textLabel.text = @"来教室里的会计法";
cell.detailTextLabel.text = @"sldkfj";
return cell;
}
关于MVC更具体的说明可以参考我的另外一篇文章iOS-NSArray与Model模型