我有一個應用程序,用戶在TableView中選擇某一行,並將該行的內容發送到下一個ViewController。在TableView中添加Segue的正確方法單元格
到目前爲止,我通過Segue將TableView Cell/Row連接到下一個ViewController。我現在面臨的問題是將所選行的值傳遞給下一個ViewController。我已經編寫了didSelectRowAtIndexPath
和prepareForSegue
函數的代碼。
下面是函數(在ViewController.m
文件中,一個與所述的TableView):
的didSelectRowAtIndexPath
功能:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath entered");
//itemNameList is a mutable array where I get my TableView data from
NSMutableString *itemName = [itemNameList objectAtIndex:indexPath.row];
//selectedItem is a global mutable string I use to store the selected item to.
selectedItem = itemName;
UIAlertView *messageAlert = [[UIAlertView alloc]
initWithTitle:@"Row Selected"
message:itemName
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
// Display Alert Message
[messageAlert show];
}
的prepareForSegue
功能:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue entered");
if ([[segue identifier] isEqualToString:@"Details"])
{
//DetailViewController is the next ViewController once the user
//selects an item
DetailViewController *detailViewController = [segue destinationViewController];
//the first selectedItem is a property of the second ViewController
//the next selectedItem is the global mutable string
detailViewController.selectedItem = selectedItem;
}
}
的問題是prepareForSegue
函數在didSelectRowAtIndexPath
函數之前執行。這是一個巨大的問題,因爲這意味着我沒有真正將值傳遞給第二個ViewController,因爲第二個ViewController已經加載到屏幕上了。
有誰知道如何處理這個?
我的想法是以某種方式得到用戶在prepareForSegue
方法中選擇的行,但我不知道該怎麼做。
準備發送者是細胞:) – Cescy