UITableview中怎麼找到每個cell,UITableviewcell
一個朋友問我:我在每個cell中都添加了兩個按鈕(記為btnA和btnB),點擊btnA時,對應的cell中添加一個子控制項,再點擊btnB時,對應的cell中的子控制項就移除,怎麼做到?
百度了一下,發現瞭解決辦法:
首先,建立btn時,給每個btn加一個tag值
//建立cell方法-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString * iden=@"iden"; _cell=[tableView dequeueReusableCellWithIdentifier:iden]; if (_cell==nil) { _cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:iden]; } UIButton * btnA=[UIButton buttonWithType:UIButtonTypeCustom]; btnA.frame=CGRectMake(0, 0, 50, 20); btnA.tag = 1000 + indexPath.row; btnA.backgroundColor=[UIColor greenColor]; [btnA addTarget:self action:@selector(btnBClick:) forControlEvents:UIControlEventTouchUpInside]; [_cell.contentView addSubview:btnA]; UIButton * btnB=[UIButton buttonWithType:UIButtonTypeCustom]; btnB.tag = 2000 + indexPath.row; btnB.frame=CGRectMake(100, 0, 50, 20); btnB.backgroundColor=[UIColor redColor]; [btnB addTarget:self action:@selector(btnAClick:) forControlEvents:UIControlEventTouchUpInside]; [_cell.contentView addSubview:btnB]; return _cell;}
1 //添加子控制項按鈕代碼 2 -(void)btnBClick:(UIButton *)btn 3 { 4 NSString * path=[[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp4"]; 5 NSURL * url=[NSURL fileURLWithPath:path]; 6 _mp=[[MPMoviePlayerViewController alloc]initWithContentURL:url]; 7 _mp.view.backgroundColor=[UIColor purpleColor]; 8 _mp.moviePlayer.controlStyle=MPMovieControlStyleDefault; 9 10 _mp.view.frame=CGRectMake(0, 0, self.view.frame.size.width, 200);11 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag - 1000 inSection:0];12 UITableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];// 竟然還有這個方法,第一次用13 [cell.contentView addSubview:_mp.view];14 [_tableView reloadData];15 }
1 //移除子控制項按鈕代碼 2 -(void)btnAClick:(UIButton *)btn 3 { 4 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag - 2000 inSection:0]; 5 UITableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath]; 6 if ([cell.contentView.subviews containsObject:_mp.view]) { 7 [_mp.view removeFromSuperview]; 8 } 9 else10 return;11 }
給添加了紅色的幾行代碼,就搞定了!