2016-04-05 31 views
1

我有一類用戶中有很多用戶數據。就像一個聯繫人應用程序,我想當有人點擊聯繫人時,它會加載聯繫人卡片。通常我使用prepareForSegue和storyboard segue來傳遞String,Int,Array等的值,但我似乎無法弄清楚如何發送User類型的值。在發送端,我已經正確設置了它,但我無法弄清楚如何設置接收視圖。爲什麼我想發送整個事情,而不是使用點語法和單獨抓取每個元素的原因是(像聯繫人應用程序),我希望用戶能夠添加字段到聯繫人卡片,我不想有除非必須輸入我需要傳遞的所有數據。傳遞類型爲User的值

用戶等級:

class User { 
    var firstName = "" 
    var lastName = "" 
    var email = "" 
    var birthday = "" 
    var team = "" 
    var schedule = "" 
    var service = "" 
    var position = "" 
    var phoneNumber = "" 
    var dateStarted = "" 
    var profileImgURL = "" 
    var notes = "" 

    init (firstName:String, lastName:String, email:String, birthday:String, team:String, schedule:String, service:String, position:String, phoneNumber:String, dateStarted:String, profileImgURL:String, notes:String) { 
     self.firstName = firstName 
     self.lastName = lastName 
     self.email = email 
     self.birthday = birthday 
     self.team = team 
     self.schedule = schedule 
     self.service = service 
     self.position = position 
     self.phoneNumber = phoneNumber 
     self.dateStarted = dateStarted 
     self.profileImgURL = profileImgURL 
     self.notes = notes 
    } 

發件人:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "SeeContactCardSegue" { 
     if let destVC = segue.destinationViewController as? ContactCardTVC { 
      if let indexPath = tableView.indexPathForSelectedRow { 
       let user = users[indexPath.row] 
       destVC.user = user 
      } 
     } 
    } 
} 

接收機:

var user:User = ??? 

我得到一個錯誤說用戶需要進行初始化,這是我在大多數情況下獲得,但我不知道如何初始化這個。我錯過了什麼嗎?

回答

0

強制展開它。它應該工作正常。

var user:User!

+0

謝謝!不知道爲什麼我沒有想到這一點。 –

+0

發生在每個人身上。 :-) – Abhishek729

0

我有一種感覺,你遇到了同樣的問題,如果你通過模態segue顯示不同的視圖 - destinationViewController是UINavigationController而不是你的控制器。第一次驗證,你真的要到if let destVC = segue.destinationViewController as? ContactCardTVC塊中的調試器和該segue.destinationViewController確實ContactCardTVC

如果我的假設是正確的,你的destinationViewController是一個UINavigationController你的代碼看起來應該像下面這樣:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)  { 
    if segue.identifier == "SeeContactCardSegue" { 
     let nav = segue.destinationViewController as! UINavigationController 
     let cardContactVC = nav.topViewController as! ContactCardTVC 
      if let indexPath = tableView.indexPathForSelectedRow { 
       let user = users[indexPath.row] 
       cardContactVC.user = user 
      } 

    } 
} 
相關問題