2015-04-04 59 views
0

我的問題: 我使用Tableview創建了AppleWatch APP。 通過敲擊的特殊行,我想切換到DetailControllerSwift中的presentControllerWithName的Watchkit問題

所以在我didSelectRowAtIndex了Methode我使用的switch-case功能找到我要顯示一個詳細

override func table(table: WKInterfaceTable, didSelectRowAtIndex rowIndex: Int) {  
    switch(status) { 
    case "on": 
     Println() 
    case "off": 
     Println() 
    case "value": 
     self.presentControllerWithName("MyValue", context: "TheValue") 
} 

在我DetailViewController第i行只想顯示標籤中的值。 所以我這樣做:

@IBOutlet var label: WKInterfaceLabel! 

override func awakeWithContext(context: AnyObject?) { 
    super.awakeWithContext(context) 
     var TheValue = context as? String 
    label.setText(TheValue) 
    // Configure interface objects here. 
} 

現在是行爲:沒有出口的DetailViewController所示,只是出口只是活動Indikator運行,並沒有任何反應!

我的錯誤在哪裏?

+0

插座可能有無效連接,請嘗試刪除InterfaceBuilder中的連接並重新創建它。 – zisoft 2015-04-04 09:49:41

回答

-1

嗯,首先:不要這樣做。通過Storyboard將Table Row中的segues連接到下一個Controller,而不是在代碼中推送或顯示它。那麼你只需要設置下一個控制器的環境,如下所示:

override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? { 
    if models.count > rowIndex { 
     return models[rowIndex] 
    } 
    return nil 
} 

第二:你是否將標籤插口正確連接到故事板?顯示更多關於故事板的代碼和屏幕截圖。或者,甚至更好,上傳你投射到github並展示它。

+0

從代碼中呈現控制器沒有任何問題,它完全合法。爲什麼不應該呢? – zisoft 2015-04-04 09:36:05

+0

這是合法的,對,但它可能不是最佳實踐。取決於'待開啓的ViewController'的使用。如果新控制器只能從一個源點打開,最好在Storyboard中進行搜索。這樣,您可以完全看到Storyboard中控制器的連接。否則,最終只會有很多控制器處於未連接狀態,這些控制器在代碼中「神奇地」打開。不要誤會我的意思,我不是一個故事板人物,但如果我必須使用它,我也想利用這些優勢。 – stk 2015-04-04 09:48:21

+0

好的,我會在故事板中使用segue,但是我怎麼能區分1)使用segue並改變到一個新的ViewController和2)不改變到另一個控制器,並做其他的事情? – Marc 2015-04-04 17:19:44

0

我測試了所有的Tipps,但沒有任何工作,因爲我想!

現在我找到了解決方案!訣竅是取消選擇新接口控制器的'加載時隱藏'選項。那麼它的作品完美!