最近接了一個iOS的軟體開發專案,
由於是 obj-c 的初心者,在開發上難免會遇上一些看似很簡單但是卻又不知如何解決問題
分享一下剛剛遇上的問題解法,
我先從server上先要了一份資料清單回來後,將這份清單使用 UITableView 呈現列表,
然後將使用者點選的 UITableViewCell上的內容,傳送到下一個 VIEW(有拉 Segue)
依照以前使用其他語言的經驗,直覺應該是使用者選取的動作,這個事件會被先觸發,而後纔是有關 Segue 的事件觸發
因此先在 tableView : didSelectRowAtIndexPath 的事件中,先記錄好使用者選取的內容
再透過 prepareForSegue 事件傳送內容到下一個VIEW
事實上,Segue prepareForSegue 會早於 tableView : didSelectRowAtIndexPath 被觸發
問題來了,我要怎樣在 Segue prepareForSegue 的事件內,知道使用者是選了第幾個選項?
01 |
- ( void )prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender |
02 |
{ |
03 |
id target = segue.destinationViewController; |
04 |
//使用者選取那一筆資料 |
05 |
NSIndexPath *path = [self.tableView indexPathForSelectedRow]; |
06 |
//從server 下載回來的資料,放在一個 NSMutableArray 中,透過path.row可以取得內容 |
07 |
NSString *rowValue = [serverList objectAtIndex:path.row]; |
08 |
//Title 是VIEW內的定義好的變數 |
09 |
[target setValue:rowValue forKey:@ "Title" ]; |
10 |
} |