此份筆記是根據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]
}
}
【執行結果】
沒有留言:
張貼留言