我有一个带有自定义单元格的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];
}}
感谢您的任何建议。
答案 0 :(得分:2)
与使用indexPath.row相同,您将使用indexPath.section来标识当前活动的部分。例如,在cellForRowAtIndexPath中,您可以有两个嵌套的switch语句,一个用于该部分,一个用于该行。
为tableView填充另一个方法(此处不声明完整性):
numberOfSectionsInTableView
将返回2(两个部分),
numberOfRowsInSection
将返回7或3,具体取决于活动部分,
titleForHeaderInSection
将返回(如果需要)您希望在您的部分顶部看到的字符串。
并且在个人提示中:您可能不想将您的观点称为 test1 ,最好将其声明为
AnatomyWeb * anatomyWeb = ...
Indications * indications = ...
您多次使用test3并且“testX”命名样式可能很难调试