用plist建立UITabController

摘要:
建立UITabController时,将几个uiviewcontroller初始化后放入数组,然后通过UITabController进行串联。但是在初始化uiviewcongroller和配置控件的时候会出现很多重复的代码,对后期的维护会带来很多不便。因此通过建立一个plist文件,通过model来优化代码。

建立UITabController时,将几个uiviewcontroller初始化后放入数组,然后通过UITabController进行串联。但是在初始化uiviewcongroller和配置控件的时候会出现很多重复的代码,对后期的维护会带来很多不便。因此通过建立一个plist文件,通过model来优化代码。

1.建立一个plist文件,在文件中添加相关控件的名称。

2.在model中将plist文件中的控件名取出来并赋值。

3.在UITabController中初始化model,引入各uiviewcontroller。

第一步:

用plist建立UITabController第1张用plist建立UITabController第2张

第二步:

1 #import "BaseInfo.h"
2 #import <UIKit/UIKit.h>
3 @interfacePageInfo : BaseInfo
4 @property (nonatomic,strong)NSString *image;
5 @property (nonatomic,strong)NSString *SelectedImage;
6 
7 +(NSArray *)pageControllers;
8 
9 @end
1 #import "PageInfo.h"
2 
3 @implementationPageInfo
4 //通过类方法,将传来的NSDictionary中相应的元素解析出来,返回解析出来的model
5 +(PageInfo *)infoFromDict:(NSDictionary *)dict
6 {
7     PageInfo *info =[[PageInfo alloc]init];
8     info.ID = [dict valueForKey:@"Class Name"];
9     info.name = [dict valueForKey:@"Title"];
10     info.image = [dict valueForKey:@"Image"];
11     info.SelectedImage = [dict valueForKey:@"SelectedImage"];
12     returninfo;
13 }
14 +(NSArray *)pages
15 {
16     //找到建立的plist文件路径
17     NSString *confile = [[NSBundle mainBundle]pathForResource:@"HomeList" ofType:@"plist"];
18     //将plist文件中定义的NSArray拿到
19     NSArray *pageConfign =[NSArray arrayWithContentsOfFile:confile];
20     NSMutableArray *pages =[[NSMutableArray alloc]init];
21     
22     if (pageConfign.count <= 0) {
23         NSLog(@"NO LIST");
24 }
25     //遍历plist文件中的Array,并将数组中的字典解析并配置为model,然后将配置好的model添加到可变数组中,返回可变数组
26     for (NSDictionary *dict inpageConfign) {
27 [pages addObject:[PageInfo infoFromDict:dict]];
28 }
29     returnpages;
30 }
31 +(NSArray *)pageControllers
32 {
33     //取到pages方法中返回的数组
34     NSMutableArray *controllers =[NSMutableArray array];
35     NSArray *page =[PageInfo pages];
36     UIViewController *pageController =nil;
37     UINavigationController *napage =nil;
38     //将取到的数组将model中定义的各类,赋值给相应的控件,返回
39     for (PageInfo *pageInfo inpage) {
40         pageController =[[NSClassFromString(pageInfo.ID) alloc]init];
41         napage =[[UINavigationController alloc]initWithRootViewController:pageController];
42         pageController.title =pageInfo.name;
43         pageController.tabBarItem.image =[UIImage imageNamed:pageInfo.image];
44         pageController.tabBarItem.selectedImage =[UIImage imageNamed:pageInfo.SelectedImage];
45 [controllers addObject:napage];
46 }
47     returncontrollers;
48 }
49 @end

第三步

1 @implementationHomePage
2 
3 -(instancetype)init{
4     self =[super init];
5     if(self) {
6 [self addTabController];
7 }
8     returnself;
9 }
10 -(void)viewDidLoad{
11 [super viewDidLoad];
12 
13 }
14 -(void)addTabController
15 {
16     
17     self.tabBar.tintColor =[UIColor redColor];
18     self.viewControllers =[PageInfo pageControllers];
19 }
20 - (void)didReceiveMemoryWarning {
21 [super didReceiveMemoryWarning];
22 }
23 
24 @end

免责声明:文章转载自《用plist建立UITabController》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ajax实现DropDownList与ListBox联动效果LoadRunner系列之—-01 接口压力测试脚本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

django的优缺点(非原创)

Django做了很多。使用它快速开发一些Web应用程序是很好的。因此,在一些人眼中,Django只不过是一种灵丹妙药,但对一些人来说,它也是一种毒药和剧毒。Django开发人员也讨论并试图支持SQLAlchemy,但最终放弃了。据估计,成本太高,很难与Django的其他模块集成。尽管Django的ORM不如SQLAlchemy强大,但它并不弱。Django的...

virtuoso数据库的安装方法

数据库虚拟师有两种安装和配置方法。第一种方法是默认情况下直接在系统中安装virtualoso,复制virtualoso的安装文件,然后默认情况下将其直接安装。使用命令行对virtualoso数据库进行操作。1将virtualoso opensource解压缩到指定目录。例如,c:virtualoso2安装VC++2012和VC++2010插件补丁3以设置环境...

uniapp安卓真机调试提示检测不到手机【解决办法】

以下是具体的解决方案:步骤1:打开、查找、单击并单击7次或更多次,以允许开发人员进行选择。...

Swift开发中 JSON对象/JSON字符串/Data的互转

本文将介绍常见的转换#pragmark JSON(object)------˃JSON string 1,原生方法//JSON------˃data------˃JSON string letdata=try?JSON序列化。data#pragmark数据------˃JSON(对象)1.本机方法guardletarray=try?[[String:AnyO...

自定义样式滚动条

自定义IE浏览器滚动条样式追溯浏览器对滚动条的自定义,恐怕最早的就是IE浏览器了。感觉IE浏览器滚动条自定制功能并不是很强,只能控制一样显示各个部分的颜色而已,像宽度,结构等都无法控制,要靠出个性点的滚动条,很难!自定义FireFox浏览器滚动条在网上找了很多关于Firfox自定义浏览器滚动条的方法,发现firefox中却实是不支持的。...

windows下vue项目启动步骤

辗转反侧之后,我终于开始了构建的vue项目。我记下了备份步骤。它只适用于那些没有启动前端项目经验的人,可能对其他人没有参考价值:OS:windows7gitclone已经为构建的vue项目安装了Nodejs。6.10以上的最新版本似乎能够自动配置路径和npm。无论如何,安装后,我可以使用cmd在任何路径下查询“node version”或“npm-v”以提供...