如何禁用 tableview 特定行但特定行包含 uibutton。按钮必须访问

Posted

技术标签:

【中文标题】如何禁用 tableview 特定行但特定行包含 uibutton。按钮必须访问【英文标题】:how to disable tableview specific row but the specific row contain uibutton. button must access 【发布时间】:2013-05-01 10:11:41 【问题描述】:

我有 UITableview

uitableview 包含播放列表音频歌曲,我在单元格中放了一个按钮。

用户点击行音频开始播放

我想要,当用户点击行时,按钮应该被启用,而单元格应该被禁用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSURL *url = [[NSURL alloc]initFileURLWithPath:soundsPath];

    NSURL *  playurl =[NSURL URLWithString:[passarray objectAtIndex:indexPath.row] relativeToURL:url];

    if (indexPath.row ==1) 

        buybtn.userInteractionEnabled=YES;
        cell.contentView.userInteractionEnabled=YES;
        buybtn.showsTouchWhenHighlighted=YES;
  
       player = [[AVAudioPlayer alloc] initWithContentsOfURL:playurl error:nil]; 

        [self.player play];
        player.delegate = self;
   cell =[tableView cellForRowAtIndexPath:indexPath];

       cellText = cell.textLabel.text;

    lbl.text=cellText;
     

【问题讨论】:

您想对单元格或按钮执行操作吗? @sunny 感谢 rply 按钮的工作,我的问题是当我单击单元格时,音频开始播放我不想要的东西 您想在点击按钮时播放音频,对吗? 我使用按钮购买音频而不是播放音频 【参考方案1】:

在方法中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

为您需要访问的按钮分配一个标签:buybtn.tag = YOUR_TAG

然后在 didselectrow 方法中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

    UITableViewCell *cell =[tableView cellForRowAtIndexPath:indexPath];

    NSLog(@"sunviews  : %@",cell.subviews);
    for (UIView *_view in cell.subviews) 
        if (_view.tag != YOUR_TAG) 
            [_view setUserInteractionEnabled:NO];
        
    

希望对你有帮助。

【讨论】:

我想禁用该按钮可访问的单元格和单元格容器“按钮”:(【参考方案2】:

这可能会有所帮助:在 UITableView's didSelectRowAtIndexPath: 方法中添加这些代码

tag 添加到specific button 然后说99

for(UIView *subview in cell.subView)

   if(![subview isKindOfClass:[UIButton class]) 
   
      subview.userInteractionEnabled = NO;
   
   else
   
      UIButton *btn = (UIButton *)subview;
      if(btn.tag != 99)
        btn.userInteractionEnabled = NO;
   

编辑:将specific button 变为enabled 来自other buttons

【讨论】:

如果单元格中添加了两个按钮,那么这两个按钮都将被启用。但他需要一个特定的按钮才能启用。【参考方案3】:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

if(indexPath.row == sepicificRowNumber)

buybtn.userInteractionEnabled=YES;

cell.selectionStyle = UITableViewCellSelectionStyleNone;


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

if(indexPath.row == sepicificRowNumber)

//Nothing happen on click   


希望对您有所帮助。

【讨论】:

感谢 rply 按钮工作 bt 我的问题是当我点击单元格然后音频开始播放我不想要的东西 cell.selectionStyle = UITableViewCellSelectionStyleNone;我在 bt 之前尝试它不起作用它只是单元格单击选择样式当用户单击单元格时删除蓝色 你试过这个吗:-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath if(indexPath.row == sepicificRowNumber) //Nothing happen on click 这肯定有帮助。

以上是关于如何禁用 tableview 特定行但特定行包含 uibutton。按钮必须访问的主要内容,如果未能解决你的问题,请参考以下文章

消除类似行但具有特定值

选择特定行但基于另一个列角色

编辑网格时,如何按行禁用特定字段?

ExtJS 4 - 如何禁用特定行中的复选框

如何禁用特定行的 ts 规则?

如何使用 SWrevaelviewController swift 3 将数据从 tableview 的特定行传递到另一个视图控制器