Swift在另一个视图控制器中隐藏按钮

时间:2016-10-15 15:48:54

标签: ios swift xcode viewcontroller

目前正在处理我的第一个IOS应用程序。我有一个购买按钮,成功时这会在同一视图控制器上设置一个隐藏的测试按钮。代码如下

Decleration

@IBOutlet weak var Test: UIButton!

成功购买时隐藏按钮

 Test.isHidden = true

现在这适用于我的Test按钮,它位于PurchaseViewController中,类是MasterViewController.Swift。 (启动此方法的“购买”按钮也位于同一视图控制器中)

PlanViewController也有一个按钮,类也链接到MasterViewController.Swift。这有一个单独的按钮,我希望在购买按钮成功时隐藏它。

当我使用与上面相同的代码进行按钮时,崩溃,当你不在其中时操纵其他视图控制器是他们的限制吗?鉴于他们都将Masterviewcontroller.swift作为类

,我本以为这是有效的

由于

1 个答案:

答案 0 :(得分:2)

虽然有时候可能,但是从一个视图控制器直接操作一个视图控制器的视图通常不是一个好主意,正如您尝试的那样。以下是我将如何做你想做的事情。

首先,通过单击故事板中的segue并转到属性检查器,在两个视图控制器之间设置segue标识符。我建议goToMasterViewController

同时MasterViewController.swiftPurchaseViewController.swift声明变量var buttonHidden = false

PurchaseViewController.swift中添加以下代码,这些代码将在您执行到MasterViewController的segue之前调用:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if(segue.identifier == "goToMasterViewController") {
        let destinationController = segue.destination as! MasterViewController
        destinationController.buttonHidden = buttonHidden
    }
}

当您在PurchaseViewController中隐藏按钮时,还要设置buttonHidden = true

最后在MasterViewController.swift

override func viewWillAppear(_ animated: Bool) {
    testButton.isHidden = buttonHidden
}