用Swift完成不同View Controller之间的切换
来源:互联网 发布:什么是波士顿矩阵 编辑:程序博客网 时间:2024/05/29 03:24
之前用objective-c开发时,页面之间的切换很容易。其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了。
今天在实验开发一个简单的小程序时,却遇到了一些bug,后来还是求助stackoverflow上的大神解决了问题,在此做下记录。
我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到另一个页面B。A和B都在同一个storyboard中。
这里先说下通用的方法:
- 手动用代码建好的view controller,即不是在storyboard中建立的:
var vc = ViewController() self.presentViewController(vc, animated: true, completion: nil) return
- 在storyboard中建立的可以用下面的代码:
let sb = UIStoryboard(name:"Main", bundle: nil)let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as ViewController self.presentViewController(vc, animated: true, completion: nil)
这里的tabBarController 是你在storyboard中对相应的viewcontroller打开其identifier inspector,然后对其storyboard ID起的名字。
所以我的程序就是,在A的类中,定义下面的button action:
@IBAction func login(sender: UIButton) { let sb = UIStoryboard(name: "Main", bundle: nil) let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as UITabBarController self.presentViewController(vc, animated: true, completion: nil) }注意我这里as后并没有写成ViewController,bug就出现在这里。当我最初写的是viewController时,总会出bug,提示这样:
我Google了关于dynamic Cast Class Unconditional也没有找到太多有用的信息,没有办法只有求助stackoverflow的大神了,很快就有人回复:
原来是因为我从storyboard读到的被命名为tabBarController的控件不能被强制转换(as)成viewcontroller,因为它其实是一个UITabBarController,也就是说,as后面你想要强制转换成的一定要与storyboard中的保持一致。
所以,代码就那么几行,但是不能生搬硬套。
如果你的storyboard中是viewcontroller,就as成viewcontroller,如果是UITabBarController就as成为UITabBarController,如果是其它的诸如UITableViewController,你知道怎么做。
0 0
- 用Swift完成不同View Controller之间的切换
- 用Swift完成不同View Controller之间的切换
- Swift3.0中如何完成不同View Controller之间的切换
- Swift:超炫的View Controller切换动画
- Modal View Controller的不同呈现方式
- 不同Activity之间的切换
- 不同Activity之间的切换
- 视图(view)、视图控制器(view controller)之间的数量关系
- view与其他controller和view之间的引用方法
- Android 切换显示各种不同的view
- oracle不同版本之间的切换
- 不同Activity之间的动画切换
- linux 不同java版本之间的切换
- PADS 不同单位之间的切换
- qt不同窗口之间的切换
- IPHONE开发 VIEW之间的相互切换
- 关于一个controller里面几个全屏view切换的问题
- MVC中Controller与View之间的数据传递
- poj 2566 尺取法
- WCF BasicHttpBinding 安全解析(2)BasicHttpBinding安全项
- 木棍(贪心)
- WCF BasicHttpBinding 安全解析(3)默认安全设置(IIS宿主)
- 也谈tomcat之启动就报exception starting filter struts2 java.lang.ClassNotFoundException
- 用Swift完成不同View Controller之间的切换
- 测滑菜单MenuDrawer的使用以及解析
- 1022. D进制的A+B (20)
- Android View.VISIBLE、INVISIBLE、GONE的区别
- Java—传统线程简单使用
- Unique Paths
- WCF BasicHttpBinding 安全解析(4)windows验证(IIS宿主)
- Linux 指令详解 cd
- (三十九)数据的持久化存储-plist实现(XML属性表)