禁用目标视图控制器中的文本字段

时间:2016-08-01 04:15:10

标签: swift xcode

我有两个视图控制器:ViewController1和ViewController2。 我的目标是,当满足ViewController1中的某个条件时触发segue时,viewController2中的文本字段将被禁用。

我设置了shouldPerformSegueWithIdentifierprepareForSegue,一切正常,但是当我把条件崩溃时说它发现了一个错误,展开了一个可选的文本字段。 我的ViewController1是:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject!) -> Bool {
    if condition1=true{
        return true
    }
    else{
        return false
    }
}

override  func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if  (segue.identifier=="segue"){
        let destVC:ViewController=segue.destinationViewController as! ViewController2
        if n==1{
            destVC.myTextField.enabled=false
        }
    }
}

3 个答案:

答案 0 :(得分:2)

prepareForSegue myTextField ViewController2 unwrapping an optional textField方法尚未初始化,因此您收到错误Bool,为了解决您的崩溃,请创建一个ViewController2 } prepareForSegue中的实例,并在override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier=="segue"){ let destVC:ViewController=segue.destinationViewController as! ViewController2 if n==1{ destVC.isEnabled=false } } } 方法中传递其值。

isEnabled

在此ViewController2内创建实例viewDidLoad,并将其用于ViewController2的{​​{1}}

var isEnabled: Bool = true

override func viewDidLoad() {
    super.viewDidLoad()
    self.myTextField.enabled = self.isEnabled
}

答案 1 :(得分:0)

此时尚未加载/实例化与目标控制器关联的视图。

在目标VC上创建一个实例boolean标志,并在prepare segue函数中设置它。然后在viewDidLoad或更高版本的目标VC中检查该开关并禁用文本字段。

答案 2 :(得分:0)

您可以在目标视图控制器中设置条件,然后就可以执行此操作

myTextField.userInteractionEnabled = false

启用和禁用文本字段的userInteractionEnabled。