gpt4 book ai didi

ios - 如何更改 Objective-C 中 UITableViewCell 中先前按下的 UIButton 标签?

转载 作者:行者123 更新时间:2023-11-29 00:00:53 25 4
gpt4 key购买 nike

我有一个带有一个按钮(用于播放/暂停)和两个文本字段的表格 View 。单击单元格 1 的播放时..按钮文本正在播放并且正在播放歌曲。

但我想在单击 cell2 或任何其他单元格时将按钮文本从播放更改为暂停。

按下标有“播放”的按钮后,它会变为“暂停”并播放音频,如果在其他单元格中按下另一个按钮,则前一个单元格按钮应将其标签更改为“播放”。

这意味着我想根据我们在音乐播放器上看到的播放/暂停更改按钮文本/图像。请帮忙

这是我写的。请告诉我下一步该怎么做:

block 引用

========更新后的答案:

- (IBAction)playCallBack:(id)sender { 
UIButton *clickedBtn = (UIButton*)sender;
NSIndexPath *indexPath =[self.tableView indexPathForCell:
(UITableViewCell *)[[sender superview] superview]];
NSLog(@"indexpath %ld",(long)indexPath.row);


if (_playBtn != nil && _playBtn != (UIButton*)sender) {
[_playBtn setTitle:@"Play" forState:UIControlStateNormal];
}
if (!player)
{

NSString *path=[[NSBundle mainBundle]
pathForResource:@"iphone_6_original" ofType:@"mp3"];
NSURL *url=[NSURL URLWithString:path];
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:NULL];
[player setDelegate:self];
[player prepareToPlay];
}

if(_playBtn == clickedBtn)
{
if ([player isPlaying])
{
[clickedBtn setTitle:@"Play" forState:UIControlStateNormal];
[player pause];
}

else
{
[clickedBtn setTitle:@"Pause" forState:UIControlStateNormal];
[player play];
}
}

else
{
if ([player isPlaying]) {
player.currentTime = 0;
[player play];
[clickedBtn setTitle:@"Pause" forState:UIControlStateNormal];
}

else{
[player play];
[clickedBtn setTitle:@"Pause" forState:UIControlStateNormal];
}
}
_playBtn = (UIButton*)sender;
[_tableView reloadData];
}

最佳答案

- (IBAction)playCallBack:(id)sender {

NSIndexPath *indexPath =[self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
NSLog(@"indexpath %ld",(long)indexPath.row);

if (!player)
{

NSString *path=[[NSBundle mainBundle] pathForResource:@"iphone_6_original" ofType:@"mp3"];
NSURL *url=[NSURL URLWithString:path];
player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:NULL];
[player setDelegate:self];
[player prepareToPlay];

}
if (![player isPlaying])
{
[sender setTitle:@"Play" forState:UIControlStateNormal];
[player play];
}
else
{
[player pause];
[sender setTitle:@"Pause" forState:UIControlStateNormal];
}

[tableview reloadData];
}

如果您在按下按钮时重新加载。然后获取当前索引

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *tableViewIdentifier=@"cell";
TableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:tableViewIdentifier];

if (cell==nil)
{
cell=[[TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableViewIdentifier];
}

cell.musicName.text=[musicList objectAtIndex:indexPath.row];
cell.singer.text=[singerList objectAtIndex:indexPath.row];
cell.duration.text=[durationList objectAtIndex:indexPath.row];
if(currentIndex==indexpath.row)
{
//do
}
else
{
//or change anything
}
[cell.playBtn addTarget:self action:@selector(playCallBack:) forControlEvents:UIControlEventTouchUpInside];

return cell;
}

关于ios - 如何更改 Objective-C 中 UITableViewCell 中先前按下的 UIButton 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49509816/

25 4 0