连接的IBOutlet组件是否为空?

时间:2012-11-22 08:20:42

标签: ios xcode interface-builder

我有以下代码与以下xib:

@property (nonatomic, retain) IBOutlet UITableViewCell *cellLoadMore;

enter image description here

当我尝试NSLog cellLoadMore时,它返回null,但是,当我尝试NSLog视图时,它有值。 cellLoadMore的问题可能是什么,返回null?

以下是我的代码:

- (void)viewDidLoad{
  [super viewDidLoad];

  NSLog(@"cell load more %@", cellLoadMore_);
  NSLog(@"view %@", self.view);
}

控制台打印:

cell load more (null)
view <UITableView: 0x1284200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xa393b0>; contentOffset: {0, 0}>

注意:我的类是UITableView的子类。

3 个答案:

答案 0 :(得分:1)

我认为这就是正在发生的事情。您正在创建一个属性和一个实例变量,但您没有正确地合成该属性。默认情况下,在Xcode 4.4+上,该属性将合成为_cellLoadMore而不是cellLoadMore_。在旧版本中,如果仅使用@synthesize cellLoadMore,则变量将为cellLoadMore。所以基本上,如果你没有一行显示@synthesize cellLoadMore = cellLoadMore_,那么你有两个不同的变量。

答案 1 :(得分:0)

在加载单元格之前,您可能正在“记录”。第一次真正使用时,将加载该单元格(google用于“延迟加载”)。如果您访问单元格的视图,它真的使用,因此真正加载。您可以在此之后记录视图和单元格,它不应再为null。

答案 2 :(得分:0)

我有时遇到过这个问题,并设法通过将我的控制器从UITableViewController的子类更改为使用UITableview委托的UIViewController来解决它。 这很烦人。