很多东西 不总结 觉的有点不舒服 这里mark下
第一是延迟初始化
首先
@property (retain, nonatomic) NSMutableArray *buttonsArray;
@synthesize buttonsArray;
//mark code
-(NSMutableArray*)buttonsArray{
if (!buttonsArray) {
buttonsArray = [[NSMutableArray alloc] init];
}
return buttonsArray;
}
UINewsDetailPlayView * newsDetailPlayView =[[UINewsDetailPlayView alloc] initFromNib];
[self.buttonsArray addObject:newsDetailPlayView];
这里把对象添加到数组中 也就是保存指针的意思吧
for (UINewsDetailPlayView *detailPlayView in self.buttonsArray) {
[detailPlayView.playButton setSelected:NO];//这样遍历 取出playButton 设置选中状态
}
为什么要这样写呢?因为遇到一个问题 手动的给一个button添加了事件 代码如下
[newsDetailPlayView.playButton addTarget:self action:@selector(playAudio:) forControlEvents:UIControlEventTouchUpInside];
-(void)playAudio:(UIButton *)button
{
int audioFlag = button.tag - PLAY_BUTTON_ROOT_TAG;
NSArray *list = [self.newsData.programaMedia componentsSeparatedByString:@","];
NSString *mediaUrl = [list objectAtIndex:audioFlag];
if (button.selected) {
[[MMSPlayer sharedMMSPlayer] stop];
[button setSelected:NO];
isPlaying = false;
}else{
[self startLoadingAnimation];
[[MMSPlayer sharedMMSPlayer] play:mediaUrl];
[button setSelected:YES];
isPlaying = true;
//mark code
[[NSTimer scheduledTimerWithTimeInterval: 10
target: self
selector: @selector(handleTimer:)
userInfo: nil
repeats: NO]retain];
}
}
-(void)handleTimer:(NSTimer *)timer{
//mark code
for (UINewsDetailPlayView *detailPlayView in self.buttonsArray) {
[detailPlayView.playButton setSelected:NO];
}
[AlertUtils alertWithMessage:@"缓冲超时 请检查网络资源是否可用"];
[[MMSPlayer sharedMMSPlayer] stop];
[self stopLoadingAnimation];
[timer release];
}