看板 KnucklesNote
作者 標題 [Xcode][Swift3] 點擊列表開啟並傳送資料至新的頁面
時間 2017-03-11 Sat. 21:31:57
延續前一篇 [Xcode][Swift3] 使用 Alamofire 存取網站資料 - KnucklesNote板 - Disp BBS
在 Table View 中載入熱門文章列表後,
接著要在點擊某一列後,開啟新的頁面,
並將文章網址傳至新的頁面
打開 storyboard
從右下的 Object library 拉一個 View Controller 進來
![[圖]](http://i.imgur.com/yHsYTPK.png)
按著 Ctrl 將 HotTextCell 拉到新的 View Controller
放開後會跳出一個選單,選 Selection Segue 的 Show
![[圖]](http://i.imgur.com/bBrIKed.png)
兩個頁面間會出現一個箭頭,這個連接頁面的箭頭叫做 Segue (發音為 seg-way)
點一下後在屬性檢視器的 identifier 輸入「TextRead」,之後在程式會用到
![[圖]](http://i.imgur.com/WC8MJMS.png)
執行看看,隨便點一篇文章就可以進到空白頁面,
按左上的回列表就可以回熱門文章頁
![[圖]](http://i.imgur.com/ODBit1y.png)
回到 storyboard
點一下 View Controller,在屬性檢視器輸入 Title:「閱讀文章」
Title 會顯示在頁面上方的 Navigation Bar
![[圖]](http://i.imgur.com/0in2GPQ.png)
傳送資料至新的頁面
點 Command+n 新增一個 Cocoa Touch Class 檔案
Class: TextViewController
Subclass of: UIViewController
![[圖]](http://i.imgur.com/Kavo9Rv.png)
設定 View Controller 的 Custom Class 為 TextViewController
![[圖]](http://i.imgur.com/ewdaNmx.png)
編輯 TextViewController.swift
在 class TextViewController: UIViewController { 這行下面加上一個成員變數
var urlString: String!
urlString 用來接收要顯示的網址型態後面加驚嘆號代表這個變數一旦賦值後就不會再變為 nil
所以取值的時候可以不需要先用 if 判斷或是加上驚嘆號
再來要設定點擊列表某一列時,
將文章網址傳給 TextViewController 的成員變數 urlString
編輯 HotTextViewController.swift
最後面有一個註解掉的成員函數 prepare(for:sender:)
取消註解後修改為
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// 1.
if segue.identifier == "TextRead" {
// 2.
guard let textViewController = segue.destination as? TextViewController,
let row = self.tableView.indexPathForSelectedRow?.row,
let hotText = self.hotTextArray?[row] as? [String: Any]
else { return }
// 3.
textViewController.urlString = hotText["url"] as? String
}
}
prepare(for:sender:) 是在 storyboard 中,// 1.
if segue.identifier == "TextRead" {
// 2.
guard let textViewController = segue.destination as? TextViewController,
let row = self.tableView.indexPathForSelectedRow?.row,
let hotText = self.hotTextArray?[row] as? [String: Any]
else { return }
// 3.
textViewController.urlString = hotText["url"] as? String
}
}
使用 segue 設定點擊後連至其他頁面時會執行的函數
1. 可能會有不同的 segue,所以要先判斷是不是之前命名為 "TextRead" 的 segue
2. 先用 guard 確保三個常數有正確取到
textViewController 為 segue 連結到的目標 Controller
row 為目前點選的是 tableView 的第幾列
hotText 為第 row 列的資料
3. 取得 hotText["url"] 存至目標 Controller 的成員變數 urlString
修改 TextViewController.swift
確認一下是否有接收到列表傳來的網址
在成員函數 viewDidLoad() 裡加上
print(self.urlString)
執行看看,點選某篇文章後,Console 視窗是否有顯示文章網址
![[圖]](http://i.imgur.com/bWFd854.png)
要使用 WebView 將網頁使用內嵌的瀏覽器顯示出來,請看下一篇:
[Xcode][Swift3] 使用 WebView 顯示網頁內容 - KnucklesNote板 - Disp BBS
--
※ 作者: Knuckles 時間: 2017-03-11 21:31:57
※ 編輯: Knuckles 時間: 2017-03-18 12:22:43
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 636
回列表(←)
分享