2017-07-27 43 views
-4

剛剛開始與迅速。屏幕上的用戶界面很少,想要在遵循特定條件時使用界面進行操作。 的問題是,當我們拖動UI並訪問之類的東西@IBoutlet像下面如何獲取@IBOutlet弱變量

@IBOutlet weak var modifiedSegmentLoginRegister: UISegmentedControl! 

了一個如何外部訪問它

func viewDidLoad(){ 
its accessible here 
} 

不能得到不acessible外modifiedSegmentLoginRegister在此註冊。

+0

向我們展示全班 –

+0

@JAL我剛剛重新檢查。你不能將插座拖到'func'範圍內。只能拖入'class'範圍。爲什麼:因爲該類表示故事板上的VC實例,並且您正在創建的屬性(通過拖動)是該類實例的屬性,因此無法將其拖入該函數中。如果我錯了,請告訴我。 –

+0

@TungFam你可能是對的,這只是一個猜測,而我離開了Xcode。無論哪種方式,我認爲問題在於插座設置不正確。 – JAL

回答

0

,因爲這是它是如何設計的(現在這個信息就足夠了),你不能訪問它。

你需要做什麼來訪問它:當你需要對這些特定條件進行檢查時,創建將觸發事件的函數。在這些功能中,您可以訪問Outlet。

例如:將按鈕添加到您的ViewController>其拖入碼>選擇Action(但不是Outlet)>在該方法嘗試做你所需要的(檢查這些條件等)>,你會看到Outlet將可以訪問。

0

所以,IBOutlets實際上並沒有加載,直到加載視圖。所以在調用viewDidLoad之前,它們實際上並不可用。你可以在你的VC創建一個變種,然後用它有互動,然後將其添加到視圖

view.addSubview(item); 
0

我假設您正在嘗試訪問UISegmentedControl的屬性或方法。 如: modifiedSegmentLoginRegister.setTitle("A" :forSegmentAt: 0)

IBOutlet就像任何其他變量一樣。它可以被聲明或初始化爲一個函數外的實例變量。但是,如果要更改或訪問它,則需要在函數內部執行該操作,例如viewDidLoad。您無法訪問「在外部訪問」。

+0

感謝您的信息,那麼是否有任何可行的方法可以做到超出範圍viewDidLoad中? –

+0

您可以在任何功能中訪問它。例如,您可以連接一個按鈕或其他類型的IBAction。或者你可以創建你自己的函數viewDidLoad或其他調用。 –