2014年7月3日 星期四

UITableView programmatically using Swift language(Send data by Segue)

【說明】

此份筆記是根據ISBN:978-986-201-900-9這本書的第10章節所紀錄的。

此份筆記記錄如何透過Storyboard的Segue將資料從A畫面傳送到B畫面顯示。

首先必須設定Segue的Identifier,主要是用來判定是從哪一個Segue到哪一個畫面,如下圖所示,將Identifier設定為showRecipeDetial。

設定Segue的Identifier
在A畫面的ViewController內實作prepareForSegue這個方法即可傳遞想要顯示的資料。

【片段程式碼】

override func prepareForSegue(_segue: UIStoryboardSegue!, sender: AnyObject!) {
        
}
實作prepareForSegue這個方法,因為A畫面是繼承UITableViewController,所以func會以override的方式實作。

if (_segue.identifier == "showRecipeDetial") { }
確認Segue的identifier是不是先前我們設定的字串。

var indexPath = tableView.indexPathForSelectedRow()
建立一個名為indexPath的變數,存放的是使用者所點選行。

var destViewController = _segue.destinationViewController as RecipeDetailViewController
建立一個名為destViewController的變數,資料型態為RecipeDetailViewController,存放的是Segue所連接的目的地ViewController,如此一來我們就可以存取RecipeDetailViewController內所擁有的變數。

destViewController.recipeName = recipesNames[indexPath.row]
將A畫面的recipesNames傳給B畫面的recipeName。


【完整的prepareForSegue程式碼】

override func prepareForSegue(_segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (_segue.identifier == "showRecipeDetial") {
        var indexPath = tableView.indexPathForSelectedRow()
        var destViewController = _segue.destinationViewController as RecipeDetailViewController
        destViewController.recipeName = recipesNames[indexPath.row]
    }
}

【執行結果】

    

沒有留言:

張貼留言