大佬教程收集整理的这篇文章主要介绍了ios – 为Swift中的控制器属性赋值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在Objective C中我会做这样的事情
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; AnsViewController *ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"]; ansViewController.num = theNum; [self presentViewController:ansViewController animated:YES completion:nil];
在另一个viewcontroller.h文件中,我会写这个来声明属性来获取数据
@property (nonatomiC) int num;
现在对于斯威夫特我有这个
let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil) let ansViewController : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as UIViewController ansViewController.num = theNum; self.presentViewController(ansViewController,animated:true,completion:nil)
在另一个视图控制器的.swift文件中我通过执行来声明num
let num: int
ansViewController.num = theNum;
它说,“UIViewController没有名为num的成员”我如何解决这个错误,我做错了什么?
谢谢
在Objective C中,您已将ansViewController显式定义为AnsViewController *,其属性为num.
但是,在你的Swift代码中,你已经明确地将ansViewController定义为UIViewController,而不是AnsViewController.因此,编译器不知道这实际上是一个AnsViewController,还是其他一些UIViewController子类,或者只是一个vanilla UIViewController.
现在为解决方案.
我们将尝试将返回的值作为AnsViewController向下转换,然后在向下转换成功的情况下访问该属性(我假设它总是会,但是从你的其余代码和笔尖的上下文中,我可以’确定).
let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil) // To be safe,let's attempt to downcast the returned value as an AnsViewController if let ansViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as? AnsViewController { // We get here if the "as?" succeeds with a non-nil value ansViewController.num = theNum; self.presentViewController(ansViewController,completion:nil) } else { // Out of context,I can't see why this case would (or Could) ever happen }
现在,如果你知道这将永远成功(从我所看到的,-instantiateWith的返回值是确定性的),那么你可以更简洁一点:
let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil) // Force the downcast as an AnsViewController (this Could crash at runtime // if the return value is nil or not an AnsViewController,so again,// the prevIoUs example is safer let ansViewController = storyBoard.instantiateViewControllerWithIdentifier("ansView") as AnsViewController ansViewController.num = theNum; self.presentViewController(ansViewController,completion:nil)
以上是大佬教程为你收集整理的ios – 为Swift中的控制器属性赋值全部内容,希望文章能够帮你解决ios – 为Swift中的控制器属性赋值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。