在UIView上设置属性

问题描述:

我需要从UIViewController设置UIView上的属性。听起来很简单(MorePlanDetailsUIView),在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。我错过了什么?

+2

是self.plan也许是空? –

正如在评论中指出的,使用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];