传递变量期间的错误一个viewController以编程方式传递给另一个控制器

时间:2016-12-16 01:04:21

标签: ios swift uiviewcontroller

我想将textfields值传递给另一个viewcontroller。我尝试使用以下代码但没有成功:

Frist我试过了:

var testval = "est val here lalla"
let viewController = BookingConfirmationController(nibName: "BConController", bundle: nil)
                viewController.testval = "test test"
                self.presentViewController(viewController, animated: true, completion: nil)

当我运行此代码时,我可以传递变量,因为期望位viewController未显示。相反,我得到了黑屏。我发现这个nibName是旧的用法,不再使用了。我通过storyborad创建了viewContorllers。

然后我尝试了以下代码:

var storyboard: UIStoryboard =   UIStoryboard (name: "Main", bundle: nil)


          var testval = " test"

                var vc: UIViewController = storyboard.instantiateViewControllerWithIdentifier("BConControllerID") as UIViewController

                vc.testval = testval

                self.presentViewController(vc ,animated: true, completion: nil )

我在这里遇到错误

  

UIViewController没有名为'festival'的成员

如果没有变量,我可以成功打开下一个viewController。

我还在学习SWIFT,任何人都可以帮我打开下一个视图控制器并传递变量

1 个答案:

答案 0 :(得分:1)

为了拥有自定义参数,您应该拥有UIViewController的子类。要从另一个类访问它,您必须将UIViewController的实例强制转换为您创建的子类。在这一行

var vc: UIViewController = storyboard.instantiateViewControllerWithIdentifier("BConControllerID") as UIViewController

你应该像

那样
var vc: myViewController = storyboard.instantiateViewControllerWithIdentifier("BConControllerID") as myViewController

其中myViewController是您拥有的自定义子类,以便访问它的属性。

另外作为旁注,你要创建的只是一个UIViewController,你不需要显式地将其转换为instantiateViewControllerWithIdentifier将返回一个UIViewController