在UIView上设置属性
问题描述:
我需要从UIViewController
设置UIView
上的属性。听起来很简单(MorePlanDetails
是UIView
),在UIView上设置属性
MorePlanDetails *moreDetails = [[MorePlanDetails alloc] initWithFrame:CGRectMake(10, 60, self.view.frame.size.width-20, self.view.frame.size.height-80)];
moreDetails.plan = self.plan;
[self.navigationController.view addSubview:moreDetails];
上MorePlanDetails的属性定义通常的方式:
@property (nonatomic, strong) PFObject *plan;
合成:
@synthesize plan = _plan;
这应该这样做,没有按是吗?但由于某种原因,moreDetails.plan
停留null
。我错过了什么?
答
正如在评论中指出的,使用self.plan。但实际上,你甚至不需要再添加“@synthesize”,只要你有@property,编译器就会为你生成getters和setters。
加:代码
@property (nonatomic, strong) PFObject *plan;
参考:
self.plan = whatever
答
如果你正在moredetails.plan为null,则通过self.plan返回的值是空你可以得到更清晰,如果您可以使用调试器调试代码,而不需要使用合成属性。
答
这个问题很简单。我正在初始化我的小部件 - 取决于计划对象 - 在- (id)initWithFrame:(CGRect)frame
中,但只在下一行中设置计划对象。所以很显然,这些小部件是空的。
解决方案是简单地在一个单独的方法中初始化小部件,并只在计划设置在moreDetails上时调用它。
的干活代码:
MorePlanDetails *moreDetails = [[MorePlanDetails alloc] initWithFrame:CGRectMake(10, 60, self.view.frame.size.width-20, self.view.frame.size.height-80)];
moreDetails.plan = self.plan;
[moreDetails initWidgets];
是self.plan也许是空? –