iOS开发学习笔记 -- (三)动态创建视图
来源:互联网 发布:银行 大数据 风险控制 编辑:程序博客网 时间:2024/05/02 10:23
这次的例子会演示用编程的方式使用TabBarController及创建视图。
它会创建两个TAB,然后在每个TAB页中,加载我们自己定义的一个视图。最终结果如下:
先新建一个项目,因为不需要interface builder,我们选择Empty的项目类型。
项目创建完成后,主要文件只有:AppDelegate.h和AppDelegate.m。
接下来,我们需要创建自定义的视图。在Xcode中,选择:New File -- Objective-C class,在接下来的对话框中,输入类名:MyViewController,并且选择subclass为UIViewController,因为我们不需要interface builder,需要确保最下面的"With XIB for user interface“没有被选中。
生成的MyViewController.h代码如下:
#import <UIKit/UIKit.h>@interface MyViewController : UIViewController@end
MyViewController.m代码:
#import "MyViewController.h"@interface MyViewController ()@end@implementation MyViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end我们需要在视图中添加自定义的控件,为了简单,我们就显示一个Label好了。
我们在viewDidLoad方法中添加下面的代码:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 150, 40)]; [label setText: [NSString stringWithFormat:@"Hello, this is view %d", i++]]; [self.view addSubview:label];
这里面的i是一个全局变量,在MyViewController的最头上定义:
@implementation MyViewControllerstatic int i=1;这样,我们的视图就能够根据创建的顺序,动态地显示:Hello, this is view 1, 或view 2, view3...,取决于创建的视图的个数。
视图创建好了,我们需要使用TabBarControl了。同样使用代码来创建,这次,我们个性AppDelegate.m中的didFinishLaunchingWithOptions方法,修改后代码如下(注意需要在最顶端 #import"MyViewController.h"):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. tabBarController = [[UITabBarController alloc]init]; NSMutableArray *tabs = [[NSMutableArray alloc] initWithCapacity:2]; MyViewController *myViewController1 = [[MyViewController alloc] init]; [myViewController1 setTitle:@"View1"]; UINavigationController *navController1 = [[UINavigationController alloc] initWithRootViewController:myViewController1]; [tabs addObject:navController1]; navController1.tabBarItem.image = [UIImage imageNamed:@"star.png"]; MyViewController *myViewController2 = [[MyViewController alloc] init]; [myViewController2 setTitle:@"View2"]; UINavigationController *navController2= [[UINavigationController alloc] initWithRootViewController:myViewController2]; navController2.tabBarItem.image = [UIImage imageNamed:@"star.png"]; [tabs addObject:navController2]; [tabBarController setViewControllers:tabs]; tabBarController.selectedIndex = 0; self.window.rootViewController = tabBarController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES;}先创建TabBarController的实例。tabs数组用于存放tab列表。接下来我们分别创建了两个MyViewController的实例,并且将它们添加到了两个对应的UINavigationController中,设置UINavigationController的按钮图片,最后将UINavigationController对象添加到tabs数组中。
也就是说,tabs数组包含的是两个UINavigationController对象,而这两个对象本身又分别包含了我们自定义的MyViewController对象。
接下来,将tabs数组设置为tabBarController对象的viewControllers,设置当前window的rootViewController。
这里为什么要用UINavigationController对象呢,我们看上面的最后实现效果,两个View最上方分别都有一个标题:View1, View2,这就是这个控件的作用。实际上完全可以不用这个控件,实现代码就会变成类似:
[tabs addObject:myViewController1];当然,最后就没有标题了。
- iOS开发学习笔记 -- (三)动态创建视图
- iOS学习笔记——表视图一(创建)
- iOS学习笔记——表视图三(搜索)
- IOS开发学习笔记(三)
- iOS开发学习笔记——分段视图(UISegmentedControl)
- IOS开发学习笔记(导航控制器,视图控制器,模态)
- iOS开发学习笔记② - 视图
- iOS开发学习笔记③ - 视图控制器
- IOS学习(一)视图创建
- iOS开发学习笔记-C语言学习(三)
- MyBatis学习笔记(三)Mapper动态代理开发
- SQL Server 2008 学习笔记(三)视图的创建与修改
- iOS学习笔记(7)视图控制器之间传递参数的三种方式
- iOS开发学习笔记三 —— Reveal(转)
- IOS学习开发笔记(三)-----初识UIScrollView
- ios学习笔记(六)视图控制器
- iOS开发学习笔记 (一)表视图基础 Table Views
- ios 学习笔记(三)
- Int类型与String类型之间的相互转化
- 用commons的HttpClient和FileUpload写的文件上传下载类
- string类型转换成LPCTSTR
- Python+MongoDB 爬虫实战
- Java中将JSON格式的数据转换成对应的Bean、Map、List数据
- iOS开发学习笔记 -- (三)动态创建视图
- 估算B树索引大小、B树索引外键列
- mysql:最实用的sql语句
- HttpClient4 文件上传
- Android自定义“图片+文字”控件四种实现方法之一--------Gallery原理(提供源码下载)
- Android系统详解之获取图片和视频的缩略图
- 练习列转行
- IOS中左右两侧导航栏的简单实现
- 常量指针和指针常量的区别