iPhone表视图部分标题

时间:2010-12-13 16:16:30

标签: iphone uitableview header rows

我有一个带有自定义单元格的TableView。

我需要能够放置2个名为Instruction and Reference的节标题。

我需要7行用于指令部分,3行用于参考部分。

以下是我编写表格视图的方法。我知道这不太理想,但我是新手:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [listOfItems count];}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}

switch (indexPath.row) {
    case 0:
        cell.customLabel.text = @"Anatomy";
        cell.customImage.image = [UIImage imageNamed:@"anatomy.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];

        break;
    case 1:
        cell.customLabel.text = @"Indications";
        cell.customImage.image = [UIImage imageNamed:@"Info.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];

        break;
    case 2:
        cell.customLabel.text = @"Medications";
        cell.customImage.image = [UIImage imageNamed:@"pill.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];

        break;
    case 3:
        cell.customLabel.text = @"Equipment";
        cell.customImage.image = [UIImage imageNamed:@"spanner.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 4:
        cell.customLabel.text = @"Procedure";
        cell.customImage.image = [UIImage imageNamed:@"procedure.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 5:
        cell.customLabel.text = @"Complications";
        cell.customImage.image = [UIImage imageNamed:@"complication.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 6:
        cell.customLabel.text = @"Procedure Video";
        cell.customImage.image = [UIImage imageNamed:@"procedure.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 7:
        cell.customLabel.text = @"Calculations";
        cell.customImage.image = [UIImage imageNamed:@"math.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 8:
        cell.customLabel.text = @"Videos & Images";
        cell.customImage.image = [UIImage imageNamed:@"Pin.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    case 9:
        cell.customLabel.text = @"Feedback";
        cell.customImage.image = [UIImage imageNamed:@"feedback.png"];
        cell.arrowImage.image = [UIImage imageNamed:@"arrow.png"];
        break;
    default:
        break;
}
return cell;}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
    AnatomyWeb1 *test1 = [[AnatomyWeb1 alloc] initWithNibName:@"AnatomyWeb1" bundle:nil];

    [self.navigationController pushViewController:test1 animated:YES];

    [test1 release];
}
if (indexPath.row == 1) {
    Indications *test1 = [[Indications alloc] initWithNibName:@"Indications" bundle:nil];

    [self.navigationController pushViewController:test1 animated:YES];

    [test1 release];
}
if (indexPath.row == 2) {
    Medication *test6 = [[Medication alloc] initWithNibName:@"Medication" bundle:nil];

    [self.navigationController pushViewController:test6 animated:YES];

    [test6 release];
}
if (indexPath.row == 3) {

    ProcedureWeb1 *test3 = [[ProcedureWeb1 alloc] initWithNibName:@"ProcedureWeb1" bundle:nil];

    [self.navigationController pushViewController:test3 animated:YES];

    [test3 release];
}
if (indexPath.row == 4) {
    ProcedureWeb3 *test3 = [[ProcedureWeb3 alloc] initWithNibName:@"ProcedureWeb3" bundle:nil];

    [self.navigationController pushViewController:test3 animated:YES];

    [test3 release];
}
if (indexPath.row == 5) {
    Complications2 *test4 = [[Complications2 alloc] initWithNibName:@"Complications2" bundle:nil];

    [self.navigationController pushViewController:test4 animated:YES];

    [test4 release];
}
if (indexPath.row == 6) {
    [self video1];
}
if (indexPath.row == 7) {
    Calculations1 *test3 = [[Calculations1 alloc] initWithNibName:@"Calculations1" bundle:nil];

    [self.navigationController pushViewController:test3 animated:YES];

    [test3 release];

}
if (indexPath.row == 8) {
    VideosAndImages *test3 = [[VideosAndImages alloc] initWithNibName:@"VideosAndImages" bundle:nil];

    [self.navigationController pushViewController:test3 animated:YES];

    [test3 release];

}
if (indexPath.row == 9) {
    Feedback *test11 = [[Feedback alloc] initWithNibName:@"Feedback" bundle:nil];

    test11.previousViewController=self;

    test11.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:test11 animated:YES];

    [test11 release];
}}

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

与使用indexPath.row相同,您将使用indexPath.section来标识当前活动的部分。例如,在cellForRowAtIndexPath中,您可以有两个嵌套的switch语句,一个用于该部分,一个用于该行。

为tableView填充另一个方法(此处不声明完整性):

numberOfSectionsInTableView将返回2(两个部分), numberOfRowsInSection将返回7或3,具体取决于活动部分, titleForHeaderInSection将返回(如果需要)您希望在您的部分顶部看到的字符串。

并且在个人提示中:您可能不想将您的观点称为 test1 ,最好将其声明为

AnatomyWeb * anatomyWeb = ...
Indications * indications = ...

您多次使用test3并且“testX”命名样式可能很难调试