iOS-如何创建一个新的App基础框架

2021-09-24 18:00:42 浏览数 (1)

一·项目创建

CreateCreate

二·创建自己的专属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模型

0 人点赞