存在分段控制及其超视图

时间:2015-11-11 10:01:22

标签: ios objective-c uisegmentedcontrol segment superview

如何通过在设置框架之前检查segmentedControl及其superview是否存在来保护此方法?

- (void)setSegmentedControlFrame {
    self.segmentedControl.frame = CGRectMake(CGRectGetMinX(self.segmentedControl.superview.frame), CGRectGetMinY(self.segmentedControl.superview.frame), CGRectGetWidth(self.segmentedControl.superview.frame), CGRectGetHeight(self.segmentedControl.superview.frame));
}

2 个答案:

答案 0 :(得分:0)

这样做

- (void)setSegmentedControlFrame {
   if self.segmentedControl.isDescendantOfView(self.view)
   {
      self.segmentedControl.frame = CGRectMake(CGRectGetMinX(self.segmentedControl.superview.frame), CGRectGetMinY(self.segmentedControl.superview.frame), CGRectGetWidth(self.segmentedControl.superview.frame), CGRectGetHeight(self.segmentedControl.superview.frame));
   }

}

答案 1 :(得分:0)

if ((self.segmentedControl) && (self.segmentedControl.superview)) {
   // do something smart here. 
}

内支架并非真正需要。 更具体一点:

if ((self.segmentedControl != null) && (self.segmentedControl.superview != null)) {
   // do something smart here. 
}

当&& amp;& amp;检查并评估为假,然后第二个不再被启用。在其他语言中,访问空对象更是一个问题,这个序列很重要。

这是你要求的吗?