2015-08-23 63 views
0

我有一個名爲timeLabel的標籤和一個調用彈窗視圖的按鈕的主視圖。從PopOver更改標籤的文本

在popover視圖中,我可以選擇一個時間(小時和分鐘),當我選擇我希望標籤文本立即變爲選定小時(標籤具有初始值:「22:00」)。

我試圖做的是建立在改變標籤的文本主視圖功能:

func setNotiTimeHour(hour: Int) 
    var time = self.notiTimeLabel.text!.componentsSeparatedByString(":") //ERROR 

    var newTime = String(hour) + ":" + time[1] 

    self.notiTimeLabel.text = newTime 
}  
func setNotiTimeMin(min: Int) { 
    var time = self.notiTimeLabel.text!.componentsSeparatedByString(":") //ERROR 

    var newTime = time[0] + ":" + String(min) 

    self.notiTimeLabel.text = newTime 
} 

然後我試圖調用這些函數,當小時或分鐘是這樣的變化:

SettingsTableViewController().setNotiTimeHour(Int(hours)) 
SettingsTableViewController().setNotiTimeHour(Int(minutes)) 

當我調用該函數是這樣,我得到一個錯誤,指出:「致命錯誤:意外發現零而展開的可選值」

我認爲它的意思是這個標籤沒有價值。

爲什麼我得到這個錯誤,是否有另一種方法來更改標籤的文本?

回答

1

SettingsTableViewController()創建一個新的視圖控制器。它不使用你已有的實例。這就是爲什麼標籤是nil

您需要將您的popover控制器引用到現有視圖控制器,將其保存在一個屬性中,然後調用該控件。您可能需要爲此創建一個委託協議,以便此popover類可以從除SettingsTableViewController之外的其他視圖控制器呈現。

+0

非常感謝!解決了這個問題 – OmerN