2011-10-03 59 views
2

您好我想從我的父視圖傳遞一個indexvalue我的子視圖這樣 //main.m傳遞IndexPath到子視圖

SubViewController *subViewController = [[SubViewController alloc] init]; 
subViewController.parentViewSelectedIndexPath = indexPath; 

然而,當我嘗試檢查,看看是否值已移交到子視圖像這樣

//sub.m

- (void)viewDidLoad 
{ 
// 
NSLog(@"%@", parentViewSelectedIndexPath); 
// 

decliration在側 sub.h

// 
@interface VehicleResultViewController : UITableViewController { 
// 
NSIndexPath *parentViewSelectedIndexPath; 
// 
@property (nonatomic, retain) NSIndexPath *parentViewSelectedIndexPath; 
// 
@end 

//回答

子視圖加載它會被傳遞到indexpath之前..所以我 不得不使用時執行後 是(didSelectRowAtIndexPath方法)本打印出來的正確方法從主視圖發送給它的索引路徑 。

它打印(空)到控制檯..我做錯了什麼?

+0

這裏沒有足夠的代碼來說明。例如,如果您聲明瞭一個ivar'parentViewSelectedIndexPath',但是然後將您的屬性合成爲'@synthesize parentViewSelectedIndexPath = _parentViewSelectedIndexPath',那麼訪問'-viewDidLoad'中的ivar並不會給您提供屬性。 –

+0

完整性檢查:在設置parentViewSelectedIndexPath後添加'NSLog(@「%@」,indexPath);''。怎麼了? – PengOne

+0

此外,如果你的-init方法訪問'self.view'(我希望它不會),那麼'-viewDidLoad'會在你有機會設置屬性之前觸發。 –

回答

2

添加一些NSLog s來確定調用順序,@Kevin指出viewDidLoad可能在設置屬性之前被調用。

此外,如果在實例化subViewController時始終設置indexPath,那麼創建自己的指定初始值設定項爲indexPath作爲參數是一種很好的做法。在@凱文使這是答案的情況下。

相關問題