2016-06-23 39 views
0

在我開始之前,我不得不說這個項目標誌着我人生中第一次深入使用Swift和XCode。我是在一週前開始的(對於我得到的距離感到非常滿意)。我不太瞭解我在做什麼,但我願意學習。文本字段和標籤編輯錯誤

現在,我的問題。

我想從一個視圖控制器的文本字段從另一個視圖控制器更改標籤。我認爲我做對了,但它一直在拋出語法錯誤等。修復後,我會運行代碼並得到一個SIGABRT錯誤。這是我的代碼。

這裏的標籤,BasicViewController下(這是不是所有的在BasicViewController,我只切出了我認爲是恰當)

class BasicViewController: UIViewController { 

    @IBOutlet weak var NameField: UILabel! 

    var NameText = String() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     NameField.text = NameText 
} 

而這裏的文本字段,EditCharController下。這是SIGABRT錯誤發生的地方。 (此外,在缺乏代碼同樣的事情。)

class EditCharController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    @IBOutlet weak var NameTextField: UITextField! 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     var NameTextDest : BasicViewController = segue.destinationViewController as! BasicViewController //Specifically, this is the line that it happens at. 

     NameTextDest.NameText = String(NameTextField.text) 

} 
} 

目前,Xcode是告訴我要改變VAR標籤的讓利標籤,但即使我做到這一點,吐出了這個錯誤。

Could not cast value of type 'UITabBarController'(?!?) (0x10310c8b0) to 'Project.BasicViewController' (0x1019a0060). 

上次我檢查,我沒有引用的UITabBarController在代碼的任何地方。爲什麼我會收到此消息?

此外,任何有關深入教程的建議都將非常感謝。

+0

是您的''一個的UITabBarController'部分BasicViewController'? – Code

+0

確保segue進入'BasicViewController'。這是告訴你,segue將進入「UITabBarController」。 – Connor

+0

@Code我在BasicViewController.swift的任何地方都看不到'UITabBarController'。我在故事板中有一個Tab Bar Controller,它會轉到BasicViewController,否則在退出EditCharController後無法顯示這些製表符。我已經設置它,所以它是這樣的:TabBarController> BasicViewController> EditCharController> TabBarController ... TabBarController自動路由到BasicViewController,但要從EditCharController或EditCharController到TabBarController需要用戶輸入以避免無限循環到BasicViewController。這是我的問題嗎? –

回答

0

嘗試

let index = 0 // change this to the tab index of the BasicViewController. 
let NameTextDest : BasicViewController = (segue.destinationViewController as! UITabBarController).viewControllers[index] as! BasicViewController 

NameTextDest.NameText = NameTextField.text! 
+0

好吧,它幾乎奏效。它並沒有阻止應用程序的死亡,但現在標籤上顯示「可選(」[無論輸入是什麼]「)」。 –

+0

@JakeMcGee看我的編輯。 – Code

+0

完美,非常感謝! –