2016-10-15 156 views
1

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

Decleration

@IBOutlet weak var Test: UIButton! 

隐藏按钮

Test.isHidden = true 

现在这个工作对我的测试按钮,这是在PurchaseViewController坐着,类是MasterViewController.Swift。 (启动此方法的购买按钮也位于同一视图控制器中)

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

当我使用与上述按钮相同的代码时,它崩溃了,是他们在操作其他视图控制器时的局限性,而您不在其中?我本来以为这个工作因为它们都具有Masterviewcontroller.swift作为类

感谢

回答

2

虽然有时可能,它通常不是一个好主意,直​​接操作一个视图控制器的观点,从另一个视图控制器,正如你正在做的那样。以下是我将如何做你想做的事情。

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

在这两个MasterViewController.swiftPurchaseViewController.swift声明一个变量var buttonHidden = false

PurchaseViewController.swift添加以下代码,执行你的原因请看MasterViewController之前将其称之为:

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 
} 
+0

有时**有可能**操纵另一个视图控制器的视图,但这样做总是一个坏主意。我会说它是“你不应该试图操纵另一个视图控制器的视图/按钮,这是一个坏主意。”然后继续解释正确的做法。 –

+0

同意,谢谢。我相应地编辑了我的答案。 –

+0

感谢你们的回复,对于为什么操纵其他视图按钮是一个坏主意感到好奇。并感谢您对奥斯汀的深入解释。我会尽快尝试一下 – uwotm8

相关问题