Xcode中不用Storyboard,用纯xib创建TabBar模式视图

简介:

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


如果要开发Tab类型视图的App,在Xcode中可以使用对应的模板

这里写图片描述

该模板自然使用的是Storyboard那一套东东,为了更清楚的了解xib布局,我们下面不用Storyboard模板来打造一个TabBar视图的App.

第一步:创建Single View App

打开Xcode,选择Single View App模板,创建新项目.然后将项目中的所有storyboard文件删除,同时将ViewController类删除.

第二步:清除启动界面

将项目中的关于启动界面的部分清空:
这里写图片描述

你还可以将info.plist文件中对应的2个属性删掉,不过貌似不删也可以

第三步:新建UIViewController视图

选择新建Cocoa Touch Class,选择新类名为RedVC,继承于UIViewController,选择创建xib文件.打开RedVC.m文件,添加如下方法:

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = @"Red";
        UIImage *image = [UIImage imageNamed:@"2.png"];
        CGImageRef imageRef = image.CGImage;
        self.tabBarItem.image = [[UIImage imageWithCGImage:imageRef scale:2 orientation:
                                 UIImageOrientationDown] imageWithRenderingMode:
                                 UIImageRenderingModeAlwaysOriginal];
    }
    return self;
}

类似的再创建2个类,分别为GreenVC和WhiteVC,同样甚至对应的上述方法,并做适当调整.

第四步:修改App启动方法

打开AppDelegate.m文件,按如下代码修改方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    UIViewController *vc1 = [[WhiteVC alloc]initWithNibName:@"WhiteVC" bundle:nil];
    UIViewController *vc2 = [[RedVC alloc]initWithNibName:@"RedVC" bundle:nil];
    UIViewController *vc3 = [[GreenVC alloc]initWithNibName:@"GreenVC" bundle:nil];

    _tabBarController = [UITabBarController new];
    _tabBarController.viewControllers = @[vc1,vc2,vc3];

    [self.window setRootViewController:_tabBarController];

    [self.window makeKeyAndVisible];


    return YES;
}

OK我们基本上完成了,编译运行App效果如下:

这里写图片描述

相关文章
|
6月前
|
iOS开发
Xcode强大的多视图立体分层显示View UI Herarchy
Xcode强大的多视图立体分层显示View UI Herarchy
56 0
|
iOS开发
Xcode警告 XIB Setting the background color on UITableViewHeaderFooterView has been deprecated. Plea...
Xcode警告 XIB Setting the background color on UITableViewHeaderFooterView has been deprecated. Plea...
109 0
|
存储 开发工具 数据库
在 Xcode 5 的 Storyboard 中使用 UITableView
当我们最开始启动 iOS 编程课程的时候,我们写了一个关于 UITableView 的教程,展示了如何使用 UITableView 去创建一个简单的表格应用。这是我们最受欢迎的教程之一。然而,你可能会发现这个教程在 Xcode 5 下不适用了。最新版的 Xcode 促进了界面生成器(Interface Builder)中 Storyboard 的使用。Storyboard 不再是一个开发项目时的候选,它是默认的了。这是为什么那份教程不适用的原因之一。
228 0
在 Xcode 5 的 Storyboard 中使用 UITableView
|
iOS开发 数据可视化 数据格式
***Xcode Interface Builder或Storyboard中可建立那两种连接?
在Xcode Interface Builder或Storyboard中,可建立到输出口(IBOutlet)和操作(方法,IBAction)的连接。 IBOutlet are for output Controls like Labels and TextFields, while IBAction are mostly for Objects like Buttons.
777 0
|
iOS开发 HTML5 移动开发
XCode 5 的 Xib 编辑器中视图元素未选择时均不可见的问题解决
XCode 5 的 Xib 编辑器中视图元素未选择时均不可见的问题解决 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
888 0
|
6月前
|
jenkins Unix 持续交付
个人记录jenkins编译ios过程 xcode是9.4.1
个人记录jenkins编译ios过程 xcode是9.4.1
92 2
|
6月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
3月前
|
iOS开发 MacOS Perl
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
解决Xcode运行IOS报错:redefinition of module ‘Firebase‘和could not build module ‘CoreFoundation‘
133 4
|
3月前
|
iOS开发 开发者
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
256 3