2016-10-15 171 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

相關問題