我正在學習爲iOS開發,同時構建一個簡單的應用程序,該應用程序從數據庫加載數據並將其顯示爲tableview,但我有一些我迄今爲止無法理解的問題。 主 - 細節控制器的類是由我創建的,而不是由XCode模板創建的,如果這很重要的話。將主數據傳遞給詳細視圖控制器的正確方法是什麼?
我嘗試從主控制器的tableview數據傳遞給細節 控制器。數據就像一對字符串一樣簡單。我爲此使用了 segue。在
prepareForSegue
方法我做 如下:if ([segue.identifier isEqualToString: @"DetailsSegue"]) { DetailsViewController* dvc = (DetailsViewController*)segue.destinationViewController; NSInteger selectedRow =[self.tableView indexPathForSelectedRow].row; dvc.nameLabel.text = [NSString stringWithFormat:@"%@", [[self.entitiesArray objectAtIndex:selectedRow name]]; ... }
的這裏的問題是,
dvc.nameLabel
是nil
。我想, 可能是因爲控制器尚未完全創建。 那麼,dvc
指針不是nil
,但我沒有看到我的init
方法中的日誌,所以我的想法,它沒有被初始化。我決定創建DetailsViewController 的實例變量和
prepareForSegue
設置:dvc->name = [NSString stringWithFormat:@"%@", [[self.entitiesArray objectAtIndex: selectedRow] name]];
,然後我在
viewDidLoad
方法設置
nameLabel
屬性,並將其實際工作!所以我想我將無法設置單個實例的實例變量。但我做到了。那有什麼不對?我覺得這不是人們這樣做的方式, 至於有一個多變量持有同樣的事情似乎是多餘的。
那麼,什麼是使用SEGUE到另一個控制器傳遞變量(在我的情況的NSString)的正確方法?
謝謝你們的幫助
可能重複[在視圖控制器之間傳遞數據](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – 2014-11-03 16:49:22