首先说一下,这种方法真的很牛,以后最好能活学活用:
在做吃货的这个应用,因为我们的uitableviewcell上需要增加一个按钮,当点击这个按钮后开始播放音频(同时button状态改为selected),这些处理都没问题了,但现在的问题是当音频播放完成后会触发有个代理方法(即告诉音频已播放完成
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
),我应该怎么在这个方法里再来更改button的状态呢:跟群里兄弟聊天才知道,我可以再去定义一个全局的button,然后将cell中的这个button赋值给这个全局button,当音频播放完成后,在那个代理方法里写上 button.selected = NO;即可
我的代码实现是这样,这里只截取片段吧:
在.h文件中:
UIButton *btn;
@property(nonatomic,retain)UIButton *btn;
在.m文件中:
首先-(void)dealloc方法这样写:
{
if (btn) { //这个地方就是我下偏文章中提到的若不确定会创建,那么在delloc里release的时候最好判断下
[btn release];
btn = nil;
}
[super dealloc];
}
在
-(UITableViewCell *)tableView:(UITableView *)tableViewDemo cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法里将cell的button赋给这个全局的button:
self.btn = cell.audioinfoButton;
接着就可以在这个音频播放完成的代理类里更改button的状态了:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"播放完成");
self.btn.selected = NO;
}