Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 分段控件及其superview存在_Ios_Objective C_Uisegmentedcontrol_Segment_Superview - Fatal编程技术网

Ios 分段控件及其superview存在

Ios 分段控件及其superview存在,ios,objective-c,uisegmentedcontrol,segment,superview,Ios,Objective C,Uisegmentedcontrol,Segment,Superview,在设置帧之前,如何通过检查segmentedControl及其superview是否存在来保护此方法 - (void)setSegmentedControlFrame { self.segmentedControl.frame = CGRectMake(CGRectGetMinX(self.segmentedControl.superview.frame), CGRectGetMinY(self.segmentedControl.superview.frame), CGRectGetWi

在设置帧之前,如何通过检查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));
}
你喜欢这样吗

- (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));
   }

}
你喜欢这样吗

- (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));
   }

}
实际上并不需要内支架。 更具体地说:

if ((self.segmentedControl != null) && (self.segmentedControl.superview != null)) {
   // do something smart here. 
}
当&&的第一个条件被选中并计算为false时,第二个条件将不再被超越。在其他语言中,访问空对象是一个更大的问题,这个序列很重要

这是你要的吗

实际上并不需要内支架。 更具体地说:

if ((self.segmentedControl != null) && (self.segmentedControl.superview != null)) {
   // do something smart here. 
}
当&&的第一个条件被选中并计算为false时,第二个条件将不再被超越。在其他语言中,访问空对象是一个更大的问题,这个序列很重要


这是你要的吗

这将在objective-c中起作用,但不会明确检查self.segmentedControl是否为空。它之所以有效,是因为向null发送任何方法都会分别返回null、0或false。因此,当self.segementedControl为null时,将不会执行赋值。但是,我怀疑这是否被认为是干净的代码。确切地说,这是更干净、更好的代码。这在objective-c中可以工作,但不能明确地检查self.segmentedControl是否为null。它之所以有效,是因为向null发送任何方法都会分别返回null、0或false。因此,当self.segementedControl为null时,将不会执行赋值。然而,我怀疑这是否被认为是干净的代码。确切地说,这是更干净、更好的代码。