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

时间:2013-05-01 10:11:41

标签: iphone uitableview avaudioplayer xcode4.6

我有UITableview

uitableview containe播放列表音频歌曲,我在按钮中放了一个按钮。

用户点击行音频开始播放

我想,当用户点击行时,只有按钮才能启用,而单元格应该禁用

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

3 个答案:

答案 0 :(得分:0)

这可能有所帮助:在UITableView's didSelectRowAtIndexPath:方法

中添加这些代码

tag添加到specific button99然后

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的{​​{1}} enabledother

答案 1 :(得分:0)

方法

- (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 :(得分:0)

- (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   

}

}

希望它有所帮助。