0

我有三个字符串,每个字符串都表示 True 或 False。根据哪些字符串说 True 我会在表格视图中显示它们。这是我的代码:

-(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;
}

问题是如果showFirstFieldshowThirdField是 True 并且showSecondField是 False 则部分标题将无法正确设置。有没有办法可以将标题设置为下一个可用部分。

4

2 回答 2

0

在您的代码中,如果showFirstFieldand showThirdFieldare True and showSecondFieldis False 那么sectionNum将是4indexPath.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;
}
于 2012-07-21T12:56:06.270 回答
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";
    }
}
于 2012-07-26T19:45:51.177 回答