显示表视图部分标题

时间:2012-07-20 22:30:37

标签: iphone xcode uitableview

我有三个字符串,每个字符串都是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;
}

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

2 个答案:

答案 0 :(得分:0)

如果showFirstFieldshowThirdField为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";
    }
}