我有三个字符串,每个字符串都是True或False。根据哪些字符串说真,我会在表视图中显示它们。这是我的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([appDelegate.showFirstField isEqualToString:@"True"]) {
if (indexPath.section==2) {
cell.textLabel.text=@"First Field Title";
}
}
if ([appDelegate.showSecondField isEqualToString:@"True"]) {
if (indexPath.section==3) {
cell.textLabel.text=@"Second Field Title";
}
}
if ([appDelegate.showThirdField isEqualToString:@"True"]) {
if (indexPath.section==4) {
cell.textLabel.text=@"Third Field Title";
}
}
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
//#warning Potentially incomplete method implementation.
// Return the number of sections.
int sectionNum = 2;
if ([appDelegate.showFirstField isEqualToString:@"True"]) {
sectionNum += 1;
}
if ([appDelegate.showSecondField isEqualToString:@"True"]) {
sectionNum += 1;
}
if ([appDelegate.showThirdField isEqualToString:@"True"]) {
sectionNum += 1;
}
return sectionNum;
}
问题是,如果showFirstField
和showThirdField
为True且showSecondField
为False,则部分标题将无法正确设置。有没有办法可以将标题设置为下一个可用的部分。
答案 0 :(得分:0)
如果showFirstField
和showThirdField
为True且showSecondField
为False,则代码中的代码为sectionNum
4 。因此,indexPath.section
的可能值将为 0,1,2& 3 即可。
在此代码中
if ([appDelegate.showThirdField isEqualToString:@"True"]) {
if (indexPath.section==4) {
cell.textLabel.text=@"Third Field Title";
}
}
即使此条件[appDelegate.showThirdField isEqualToString:@"True"]
为真,其他条件indexPath.section==4
也将为假。
所以改变你的
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
//#warning Potentially incomplete method implementation.
// Return the number of sections.
int sectionNum = 2;
if ([appDelegate.showFirstField isEqualToString:@"True"]) {
sectionNum += 1;
}
if ([appDelegate.showSecondField isEqualToString:@"True"]) {
sectionNum += 1;
}
if ([appDelegate.showThirdField isEqualToString:@"True"]) {
sectionNum += 1;
}
return sectionNum;
}
到
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 5;
}
答案 1 :(得分:0)
经过几个小时的工作后,我采用了不同的方法,这段代码对我有用。 将check
布尔值设置为false并将其设置为全局变量
if ([appDelegate.showFirstField isEqualToString:@"True"] && checkFirst == FALSE){
if (indexPath.section >1 && indexPath.section==indexPath.section) {
checkFirst = TRUE;
cell.textLabel.text=@"First Field Title";
}
}
else if ([appDelegate.showSecondField isEqualToString:@"True"] && checkSecond == FALSE){
if (indexPath.section >1 && indexPath.section==indexPath.section) {
checkSecond = TRUE;
cell.textLabel.text=@"Second Field Title";
}
}
else if ([appDelegate.showThirdField isEqualToString:@"True"] && checkThird == FALSE){
if (indexPath.section >1 && indexPath.section==indexPath.section) {
checkThirdField = TRUE;
cell.textLabel.text=@"Third Field Title";
}
}