我是iOS編程的新手,我試圖理解並開始實現代表以獲取視圖控制器之間的信息以及它們可能具有的任何其他用途。在iOS編程中瞭解代表
我已經使用this topic得到了一些進一步,但我不能評論,因爲我剛剛創建此帳戶,所以我不能在帖子上提出問題。我複製drewag的例子,但此行 @IBOutlet weak var delegate: ViewControllerBDelegate?
是給我我刪除了一個錯誤「IBOutlet中屬性不能有非對象類型SecondViewControllerDelegate」
,它運行,但沒有被兩個視圖控制器之間發送的信息。我以爲我開始理解代表,但只是讓他們實施,開始變得令人沮喪。我已經在這幾天了。
FirstViewController:
class FirstViewController: UIViewController, SecondViewControllerDelegate {
@IBOutlet weak var theMap: MKMapView!
func requiredText() -> String {
return "test"
}
SecondViewcontroller:
protocol SecondViewControllerDelegate {
func requiredText() -> String
}
class SecondViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var delegate: SecondViewControllerDelegate?
@IBAction func decide(sender: AnyObject) {
if let actualDelegate = self.delegate {
self.label.text = actualDelegate.requiredText()
}
}
所以我的問題簡單地說就是我究竟做錯了什麼?我以爲我正確地遵循了這個例子。
搶劫的建議固定我的錯誤。但是我的代碼仍然沒有做我想做的事情。它應該將標籤文本更改爲發送的字符串,在這種情況下,當我點擊附加到我的決定功能的按鈕時,這是「測試」。 – 2014-10-28 01:49:50
如果我從循環中提取'self.label.text = actualDelegate.requiredText()'(和聲明)Xcode說「SecondViewControllerDelegate沒有名爲requiredText的成員函數」 編輯:我加了!它拿走了錯誤,但我BAD_INSTRUCTION – 2014-10-28 01:55:36