在使用objective c的时候,调用ViewController的默认构造函数,会自动关联到一个与ViewController名字相同的xib文件上,这样无疑方便了开发者,减少了代码量。但不知道为什么,在swift中,新建ViewController实例,不在默认关联xib,一定要开发者指定xib的名字,这对于有代码洁癖的人是不可接受的,因为通常情况下,xib的名字一定是和ViewController的名字相同的。本文讲介绍一种方案去解决这个问题。
Objective C中的写法
TwoViewController *v = [[TwoViewController alloc] init]; //这样会把TwoViewController默认关联到TwoViewController.xib上 //等同调用了方法 TwoViewController *v = [[TwoViewController alloc] initWithNibName:@"TwoViewController" bundle:nil];
Swift中的写法
let v = TwoViewController() //不会关联TwoViewController.xib文件 //一定要指定xib文件 let v = TwoViewController(nibName: "TwoViewController", bundle: nil)
我们改怎样让TwoViewController()去找同名字的xib文件呢,其实原来很简单,重写init方法就行了, 新建BaseViewController.swift 重写init方法,其他的ViewController继续于BaseViewController。
override init() { super.init(nibName: (self.classForCoder.description() as NSString) .componentsSeparatedByString(".")[1] as NSString, bundle: NSBundle.mainBundle()) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }
实现原来
获取当前Class的名字,在swift中class名字前会加入Module名字,所以这里以'.'划分,取'.'后面的字符串.
相关推荐
实现类似于Facebook的滑动和滚动拉消失的Viewcontroller
Swift自定义presentViewController的转场动画
ViewController网络加载遮罩,有加载失败,没有数据等状态。使用简单
初学者适用的文档,详细讲解了ViewController的使用方法,很有用处
ViewController.swift
UIViewController的一个封装,底部带有GADBannerView
一个UIViewController自定义缩放过渡动画
开关viewcontroller像iOS任务管理器
SwiftUI中实现Swift、OC中 TabBar和Nav的导航功能,以及跳转二级界面或指定界面隐藏TabBar
iOS7和iOS8 开发中presentViewController: 不覆盖原先的 viewController界面的方法
ios实现viewcontroller切换传值的三种方法
SwipeMenuViewController可滑动的选项卡和菜单View和ViewController
导航控制器presentViewController,导航控制器presentViewController的实现。
自动控制viewController的textView和textField被键盘遮挡问题,引入.h即可
重新创建vvebo应用手势。删除tableView单元格或呈现新viewController的绝妙方法_Objectiv.zip
FRDIntent 包括两部分 FRDIntent/Intent 和 FRDIntent/URLRoutes。它们分别可以用于处理 iOS 系统中,应用内和应用外的 view controller 调用。
TVButton, 将 Apple TV中的很酷的视差图标重新创建为 iOS UIButtons ( 在 Swift 中) TVButton将 Apple TV中的很酷的视差图标重新创建为 iOS UIButtons ( 在 Swift 中) 。 效果通过长按或者拖动触发。 用法在 Swift ...
ViewController.m
仿照微信更多操作,用来分享、网页操作等。你可以使用 YFMoreViewController 只进行分享或者操作网页