我正在研究xcode 5和ios7,有一个包含7个部分的表视图,我必须在条件上显示/隐藏三个部分,为此我已经完成了部分行的高度为0,它完美地工作在ios7上,但是当我在ios6上运行时,也会查看高度为0的行。请告诉我如何在ios6中防止这种情况。
IOS7查看
在ios6中,显示隐藏在ios 7中的paypal行。当没有被选中时,我不必显示这个。
代码:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section==3 && !isadvisor)
{ return 0;}
if(indexPath.section==4 && !isadvisor)
{return 0;}
if(indexPath.section==5 && !isadvisor)
{ return 0;}
if (indexPath.section==0 && indexPath.row==0) {
return 110;
}
if (indexPath.section==3 && indexPath.row==2) {
return 125;
}
return 40;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ return 7;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section==0) return 8;
else if(section==1) return [arr3 count]+1;
else if(section==2) return 1;
else if(section==3) return 5;
else if(section==4) return [arr1 count]+1;
else if(section==5) return [arr2 count]+1;
else if(section==6) return 1;
else return 0;
return 0;
}
请帮助我该如何解决这个问题。 任何建议都将受到高度赞赏。 提前谢谢。
答案 0 :(得分:0)
我不会使隐藏部分中的行的高度为0,而是更改部分的数量,以便这些部分根本不在tableview中。这将改善表格视图的性能,并消除单元格大小为0时的任何奇怪现象。
所以,在
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ return 7;
}
而不是只是一直返回7:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ return (isadvisor ? 7 : 4);
}
您还需要在section节点的单元格和indexPath方法的单元格中容纳部分的更改。
一种可能更简洁的方法是对视图控制器进行子类化,这样如果用户是顾问程序,则实例化使用7行逻辑的不同视图控制器,否则基本视图控制器使用4行逻辑。这样可以将'isadvisor'测试的数量减少到只有一个。