cocoa编程中视图控制器与视图类介绍
来源: 阅读:1083 次 日期:2014-12-12 16:09:39
温馨提示: 小编为您整理了“cocoa编程中视图控制器与视图类介绍”,方便广大网友查阅!

uitabbarcontroller类

选项卡类允许用户在多个视图控制器之间移动并在屏幕的底部可定制该栏。向不同的视图同时提供一次单击访问,向用户选择的屏幕和编辑底栏的屏幕同时提供more按钮。

选项卡类的方便之处就是 不需要象导航栏那样以栈的方式推入和弹出视图的操作,而是组建一系列的控制器(它们各自可以是uiviewcontroller、uinavigationcontroller、uitableviewcontroller或其他任何类型的视图控制器),并通过设置栏的viewcontrollers属性将其添加到选项卡栏,使每个选项卡对应一个试图控制器。

一、创建uitabbarcontroller

常见的在应用程序委托类的applicationdidfinishlaunching:方法中创建,这通常可为应用窗口提供根视图。

// 创建一个uitabbarcontroller对象

代码如下:

uitabbarcontroller *tabbarcontroller = [[uitabbarcontroller alloc] init];

// tabbarcontroller.delegate = self;

// 创建一系列要添加到每个具体tab卡的视图控制器

代码如下:

myviewcontroller *vc1 = [[myviewcontroller alloc] init];

myotherviewcontroller *vc2 = [[myviewcontroller alloc] init];

// 将创建好的这些视图控制器先添加到一个array对象中,再将此数组分配给tab bar controller的viewcontrollers属性

代码如下:

nsarray *controllers = [nsarray arraywithobjects:vc1,vc2,nil];

tabbarcontrollers.viewcontrollers = controllers;

/* 也或者

nsmutablearray *controllers =[[nsmutablearray alloc] initwithcapacity:2];

[controllers addobject:vc1];

[controllers addobject:vc2];

*/

// 将tabbar控制器的当前视图添加到窗口

[window addsubview:tabbarcontroller.view];

当然在应用程序委托appdelegate类中创建uitabbarcontroller,相当于创建了一个基于tab bar的工程项目。不过,也可以视具体情况,我们直接在一个独立的视图控制器中创建uitabbarcontroller实例对象,如自定义一个用于视图切换的控制器类viewswitcherviewcontroller,就可在其中的viewdidload方法中创建所需要的tabbarcontroller。

在实现uitabbarcontrollerdelegate委托的视图控制器中重写init方法来自定义uitabbaritem条目。

代码一是由initwithnibname:方法来加载具体的某个视图控制器并自定义该控制器中tabbaritem样式外观等。

代码如下:

- (id)init {

if(self = [super initwithnibname:@myviewcontroller bundle:nil]) {

self.title = @my view controller;

uiimage *animage = [uiimage imagenamed:@myimage.png];

uitabbaritem *theitem = [[uitabbaritem alloc] initwithtitle:@home image:animage tag:0];

self.tabbaritem = theitem;

[theitem release];

}

return self;

}

代码二我们也可以直接在具体的视图控制器内部重写init方法。

代码如下:

- (id)init {

if([super init] != nil) {

uitabbaritem *item = [[uitabbaritem alloc] initwithtitle:@home image:[uiimage imagenamed:@myimage.png] tag:0];

self.tabbaritem = item;

[item release];

}

return self;

}

实现所需的委托方法,以让uitabbarcontroller能够正常触发这些回调方法。

代码如下:

tabbarcontroller:didselectviewcontroller: 是当用户选择一个新的选项卡时,控制器会发送这个消息。

- (void)tabbarcontroller:(uitabbarcontroller *)tabbarcontroller didselectviewcontroller:(uiviewcontroller *)viewcontroller

{

// 捕捉selectedindex,可确定当前所选选项卡

nsnumber *tabnumber = [nsnumber numberwithint:[tabbarcontroller selectedindex]];

// 使用iphone内置用户默认系统nsuserdefaults,利用setobject:forkey:为关键字设定值

[[nsuserdefaults standarduserdefaults] setobject:tabnumber forkey:@selectedtab];

[[nsuserdefaults standarduserdefaults] synchronize];

// 选项卡图标项右上角红色小红圈数字提示

viewcontroller.tabbaritem.badgevalue = [nsstring stringwithformat:@%d,80];

}

更多信息请查看IT技术专栏

更多信息请查看技术文章
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map