用plist建立UITabController

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

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

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

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

第一步:

第二步:

1 #import "BaseInfo.h"
2 #import <UIKit/UIKit.h>
3 @interface PageInfo : 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 @implementation PageInfo
 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     return info;
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 in pageConfign) {
27         [pages addObject:[PageInfo infoFromDict:dict]];
28     }
29     return pages;
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 in page) {
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     return controllers;
48 }
49 @end

第三步

 1 @implementation HomePage
 2
 3 -(instancetype)init{
 4     self = [super init];
 5     if (self) {
 6         [self addTabController];
 7     }
 8     return self;
 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
时间: 2024-12-30 08:52:38

用plist建立UITabController的相关文章

【学习总结】Info.plist和pch文件的作用

Info.plist 建立一个工程后,会在Supporting files文件夹下看到一个“Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 项目中其他Plist文件不能带有“Info”这个字眼,不然会被错认为是非常重要的“Info.plist” 项目中还有一个InfoPlist.strings的文件,跟Info.plist文件的本地化相关(新版本不会自动创建,后面单独作InfoPlist.strings的作用总结) 常见属性(注意:如果用文本编辑器打开info.

iOS开发——数据持久化OC篇&amp;plist文件增删改查操作

Plist文件增删查改 主要操作: 1.//获得plist路径    -(NSString*)getPlistPath: 2.//判断沙盒中名为plistname的文件是否存在    -(BOOL) isPlistFileExists: 3.//读取沙盒中Document文件夹下的BookList.plist文件 [NSMutableDictionarydictionaryWithContentsOfFile:plistPath]; 4.//写入文件     if ([plistDictiona

iOS工程中的info.plist文件的完整研究

原地址:http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除. 如果你在网上下载的工程中的这个文件名只是Info.plist,那么恭喜你,这个工程太老了,是用包含SDK2.0以前的Xcode生成的,不过没关系,不影响使用. 如果你使用文本编辑器打开这个文件,你会发现这是一个XM

单链表的建立与打印

建立单链表,并且从头到尾打印单链表 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int DataType; typedef struct LinkNode { DataType data;//定义节点的数据 struct LinkNode *next;//保存下一个节点的地址 }LinkNode,*pList,*pLin

九宫格代码--用了xib,plist加载和mvc思想

先看效果吧:cols =3时: cols =4时: 部分代码如下: 1 // 2 // ViewController.m 3 // 0914-九宫格第3遍 4 // 5 // Created by LongMa on 15/9/14. 6 // Copyright (c) 2015年 Dast. All rights reserved. 7 // 8 #import "ViewController.h" 9 #import "CZApp.h" 10 #import

iOS开发读取plist文件、iphone中plist文件的

在Xcode中建立一个iOS项目后,会自己产生一个.plist文件,点击时会看见它显示的是类似于excel表格: 但是,如果打开方式选择Source Code,你会看见它其实是一个xml文件. 我们会做一个小例子,在这个例子中我们自己建立一个plist文件并填入数据,然后运行时读取这个plist文件,并将数据填写在界面上. 首先要知道读取plist文件的方法,一般来说,使用代码 NSString *plistPath = [[NSBundle mainBundle] pathForResourc

plist总结

plist是个好东西: 1.不要太看得起plist,他没你想像的那么强大,不是跟一个万能仓库一样, 什么东西都可以存取.一般说来,支持的数据类型有(NS省略)Dictionary.Array.Boolean.Data.Date.Number. String这些类型,其他的类型支持,所以一般需要转化一下再存.我傻傻的以为它很厉害,放了一个View给它,企图把View放到Array里面包起 来,再把Array作为最外层的Dictionary的Value字段....对,没错,一个View也是一个obj

Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 在之前的博文中,我们创建了游戏的基础 - 小可爱的地鼠从洞中呼之欲出.我们花了大量的时间思考关于如何组织素材以及坐标置位,以让我们的游戏在iphone,ipad以及高清屏上看

info.plist

更新了Xcode8 以及 iOS10,App访问用户的相机.相册.麦克风.通讯录的权限都需要重新进行相关的配置,不然在Xcode8中打开编译的话会直接crash. 需要在info.plist中添加App需要的一些设备权限. 相机NSCameraUsageDescription 相册NSPhotoLibraryUsageDescription 通讯录NSContactsUsageDescription 始终访问位置NSLocationAlwaysUsageDescription 位置NSLocat