问题:UITableViewCell的重绘机制导致的列状态问题
环境:XCode4.2,低版本也会出现
场景:自定义UITableViewCell,使用复用cell方法,在UITableView滚动时,内容被覆盖,或者没有被刷新,或者选择时内容覆盖,或者设置cell的背景透明时,内容重叠在一起,或者图片控件出现覆盖,显示不全等问题。
原因:引起这个问题的主要原因是,重用cell。之前cell上的内容未被清空,而又增加新增内容所致。
解决方案:在使用cell时,首先删除cell上的view,代码如下。
1. static NSString *identifier = @"Fanmeli";
2. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
3. if (!cell) {
4. //cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:identifier];
// 增加新内容
5. ....
6. [求助] 多个button,怎么控制同时只有一个button是按下状态呢?
我没用控件,用的纯代码
for (int i = 0; i<7; i++)
{
newsbutton = [[[UIButton alloc]initWithFrame:CGRectMake(i*52, 0, 52, lanmu.size.height)] autorelease];
newsbutton.tag = i;
switch(i)
{
case 0:
[newsbutton setTitle:@"最新"forState:UIControlStateNormal];
[newsbutton setSelected:YES];
break;
case 1:
[newsbutton setTitle:@"中国"forState:UIControlStateNormal];
break;
case 2:
[newsbutton setTitle:@"国际" forState:UIControlStateNormal];
break;
case 3:
[newsbutton setTitle:@"政治"forState:UIControlStateNormal];
break;
case 4:
[newsbutton setTitle:@"经济"forState:UIControlStateNormal];
break;
case 5:
[newsbutton setTitle:@"体育"forState:UIControlStateNormal];
break;
case 6:
[newsbutton setTitle:@"文化"forState:UIControlStateNormal];
break;
default:
break;
}
[newsbutton.titleLabel setFont:[UIFontfontWithName:@"Helvetica-BOLD" size:14]]; //设置按钮字体及大小
// [newsbutton.titleLabel setFont:[UIFontfontWithName:@"Verdana" size:12]];
[newsbutton.titleLabelsetTextAlignment:UITextAlignmentCenter]; //设置按钮字体对齐方式
[newsbutton setTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal]; //设置按钮字体正常状态颜色
[newsbutton setBackgroundImage:nilforState:UIControlStateNormal]; //设置按钮背景图片
[newsbutton setBackgroundImage:[UIImageimageNamed:@"overflowChosen.png"] forState:UIControlStateSelected];//设置按钮选中时背景图片
[newsbutton setMultipleTouchEnabled:YES];
[newsbutton addTarget:selfaction:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; //设置按钮点击事件
[self.scrollView addSubview:newsbutton];
在onclick中怎么取得控制点击之外的其它button的动作呢
-(void)onClick:(id)sender
{
for (int i=0;i<7; i++) {
//根据tag 获取到你其他所有的button
UIButton *btn = (UIButton *)[self.viewviewWithTag:i];
//判断点击的是那个button
if (btn.tag==[(UIButton *)sender tag]) {
//这里设置你点击button 的样式
}else{
//这里设置你其他button 的样式
}
}
}
-(void)onClick:(id)sender
{
for (int i=0;i<7; i++) {
//根据tag 获取到你其他所有的button
UIButton *btn = (UIButton *)[self.viewviewWithTag:i];
//判断点击的是那个button
if (btn.tag==[(UIButton *)sender tag]) {
//这里设置你点击button 的样式
}else{
//这里设置你其他button 的样式
}
}
}
这不是最好的办法还有更好的呵呵你先用着