我有一个关于 iOS(或者更准确地说是 Objective-C)和属性的问题。我有一个带有 UISegmentedControl 的 UIView,默认情况下它有 3 个段。我有一条接受参数的消息,并且基于此参数,我可能想删除其中一个段。在 UIView AI 中这样做:
MyViewController *myview = [[[MyViewController alloc] initWithNibName:@"MyViewController" nib:nil] autorelease];
[[self navigationController] pushViewController:myview animate:YES];
[myview showItem:item];
在 UIView B 中,这发生在 showItem 中:
-(void) showItem:(Item*)item{
if (item.removeSegment){
[segmentControl removeSegmentAtIndex:0 animate:NO];
}
}
我注意到只有在我将它推送到导航控制器后调用 showItem 时才会删除该段。当我交换这两行时,我首先调用 showItem 然后推送视图, UISegmentedControl 仍然有三个段而不是两个段。
这只是感觉不对,如果有人没有按正确的顺序调用两条消息,我的代码就会中断,这似乎是一种不好的做法。有一个更好的方法吗?我一直在寻找某种我可以使用的属性生命周期,我对 ActionScript 3 非常熟悉,但我一直无法找到关于该主题的任何内容。
(顺便说一句:在 AS3 中我会创建一个属性,在设置器中我不操作任何屏幕控件,而是调用 InvalideProperties。一旦创建了整个对象和子控件,我的重写方法 CommitProperties 将被调用。在 CommitProperties 我检查如果我的属性值发生了变化,这就是我要删除该段的地方。)