如何禁用 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。按钮必须访问的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SWrevaelviewController swift 3 将数据从 tableview 的特定行传递到另一个视图控制器