用Swift完成不同View Controller之间的切换
来源:互联网 发布:javascript 取余 编辑:程序博客网 时间:2024/05/16 05:53
- 用Swift完成不同View Controller之间的切换
之前用objective-c开发时,页面之间的切换很容易。其实用swift没有很大的变化,如果你是用storyboard完成的界面,基本上是同样的方式,只不过在代码部分写成swift风格的就行了。
今天在实验开发一个简单的小程序时,却遇到了一些bug,后来还是求助stackoverflow上的大神解决了问题,在此做下记录。
我的程序结构是这样的,在一个页面A中有个按钮,然后点击按钮以后,切换到另一个页面B。A和B都在同一个storyboard中。
这里先说下通用的方法:
手动用代码建好的view controller,即不是在storyboard中建立的:123var vc = ViewController()
self.presentViewController(vc, animated:
true
, completion: nil)
return
在storyboard中建立的可以用下面的代码:123let 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:
注意我这里as后并没有写成ViewController,bug就出现在这里。当我最初写的是viewController时,总会出bug,提示这样:12345@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)
}
我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之间的数据传递
- 不用微信SDK实现图片分享或文字分享
- LOGIN前端验证
- C++-优先级队列
- 【JQuery】调用trigger()方法手动触发指定的事件
- 多态在 Java 和 C++ 编程语言中的实现比较
- 用Swift完成不同View Controller之间的切换
- 一个减少App Store审核被拒的小技巧--善用iTunes Connect中被遗忘的字段
- jvm(8)-虚拟机字节码执行引擎
- “可变”的tuple
- java虚拟机 jvm 局部变量表实战
- 关于页面多分类url正确实现如下
- mvc dao层、service层 到底怎么写?
- 使用AutoLayOut为UIScrollView添加约束图解及要点
- shell script