在iOS中,为什么viewWithTag方法返回nil?

时间:2015-08-15 16:42:54

标签: ios objective-c uitableview storyboard

今天,我遇到了一件非常奇怪的事情。

我有一个由Storyboard构建的tableview tableview的类型是 静态和分组
在其中一个Cell中,我有一个带开关的单元格(在Storyboard中设置 ON )。
我通过Storyboard将开关的标签设置为10000816。

我尝试使用[self.tableview viewWithTag 10000816]来获取tableview控制器中的开关。失败。

行。然后我尝试先获取Cell并尝试[cell viewWithTag],然后以某种方式成功。

然后我想知道为什么  所以我只是将以下行留下了注释。

       def edit
            flash[:info] =  "Hash: #{params}"
            @hour = HourLog.find(params[:id])
        end

        def update
            @hour = HourLog.find(params[:id])
            @hour.update_attributes(hours_params)
            if  @hour.save
               redirect_to @hour, :notice => "Successfully changed stat."
            else
                render 'index' # Any action here, index for example
            end
          end
    private

        def hours_params
          params.require(:hour_log).permit(:status)           
        end

跟随

UITableViewCell* cell =  [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

好的,这一次,再次成功 我评论了Get-Cell系列,我觉得这个系列无关紧要  然后奇怪的事情发生了。它失败了。我所做的唯一改变只是一条不相干的路线。 太奇怪了。

问题

如果我只是评论Get-Cell系列,为什么viewWithTag会返回nil?

UISwitch* switchButton = [self.tableView viewWithTag: 10000816];
    [switchButton setOn:NO animated:YES];

[更新]
我的switchOff被调用 - (void)viewDidAppear:

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

0 个答案:

没有答案