传递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方法)本打印出来的正确方法从主视图发送给它的索引路径 。
它打印(空)到控制台..我做错了什么?
答
添加一些NSLog
s来确定调用顺序,@Kevin指出viewDidLoad
可能在设置属性之前被调用。
此外,如果在实例化subViewController
时始终设置indexPath
,那么创建自己的指定初始值设定项为indexPath
作为参数是一种很好的做法。在@凯文使这是答案的情况下。
这里没有足够的代码来说明。例如,如果您声明了一个ivar'parentViewSelectedIndexPath',但是然后将您的属性合成为'@synthesize parentViewSelectedIndexPath = _parentViewSelectedIndexPath',那么访问'-viewDidLoad'中的ivar并不会给您提供属性。 –
完整性检查:在设置parentViewSelectedIndexPath后添加'NSLog(@“%@”,indexPath);''。怎么了? – PengOne
此外,如果你的-init方法访问'self.view'(我希望它不会),那么'-viewDidLoad'会在你有机会设置属性之前触发。 –