[英]In iOS , Why will viewWithTag method return nil?
我有一个由Storyboard构建的tableview。
表格视图的类型为“ 静态”和“分组”
在它的一个Cell中,我有一个带开关的单元(在Storyboard中设置为ON )。
我通过Storyboard将开关的标签设置为10000816。
我尝试使用[self.tableview viewWithTag 10000816]在tableview的控制器中获取开关。 失败了
好。 然后,我尝试首先获取Cell并尝试[cell viewWithTag],以某种方式,它成功了。
然后我想知道为什么。
所以我只留下了下面的注释。
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
跟随者
UISwitch* switchButton = [self.tableView viewWithTag: 10000816];
[switchButton setOn:NO animated:YES];
OK,这次,再次成功。
我评论了与我无关的Get-Cell系列。
然后发生了奇怪的事情。失败了。 我所做的唯一更改只是一条无关紧要的路线。 这么奇怪。
如果我只注释Get-Cell行,为什么viewWithTag返回nil?
- (void) switchOff{
//****** the line below is the magic Get-Cell line , if I comment this line , viewWithTag will return nil
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
UISwitch* switchButton = [self.tableView viewWithTag: 10000816];
[switchButton setOn:NO animated:YES];
}
[更新]
我的switchOff在-(void)viewDidAppear中被调用:
- (void)viewDidAppear:(BOOL)animated{
[self switchOff]
}
如果您的表视图是一个原型(其值将由cellForRowAtIndexPath
方法填充),然后将一个单元格放到表视图中,您将不会看到该单元格,因为该单元格尚未创建,因此它的内容也没有创建。
如果您的表格视图是静态的,则只有这样,才会显示单元格的情节提要的内容,并且您将获得带有该标记的单元格内的控件。
我认为您的tableview是一个原型,并且由于未创建单元格,因此您的[self.tableview viewWithTag 10000816]
返回nil,因为尚未创建该控件。
希望可以让你理解
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.