传递IndexPath到子视图

问题描述:

您好我想从我的父视图传递一个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'会在你有机会设置属性之前触发。 –

添加一些NSLog s来确定调用顺序,@Kevin指出viewDidLoad可能在设置属性之前被调用。

此外,如果在实例化subViewController时始终设置indexPath,那么创建自己的指定初始值设定项为indexPath作为参数是一种很好的做法。在@凯文使这是答案的情况下。