我有一个UITableView有3个硬编码的部分。一切都很好,但我不确定我是否正确地做到了。
定义部分中的行数:
- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section
{
NSInteger rows;
//Bio Section
if(section == 0){
rows = 2;
}
//Profile section
else if(section == 1){
rows = 5;
}
//Count section
else if(section == 2){
rows = 3;
}
}
return rows;
}
这是我构建我的细胞的地方:
- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tblView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.numberOfLines = 5;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:(10.0)];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
if ([self.message_source isEqualToString:@"default"]) {
if (indexPath.section == 0) {
if (indexPath.row == 0) {
cell.textLabel.text = [Utils formatMessage:[NSString stringWithFormat: @"%@", mySTUser.bio]];
cell.detailTextLabel.text = nil;
}
else if(indexPath.row == 1){
cell.textLabel.text = [NSString stringWithFormat: @"%@", mySTUser.website];
cell.detailTextLabel.text = nil;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
}
} //more code exists, but you get the point...
现在我定义我的部分数量
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tblView
{
return 3;
}
这是硬编码UITableView的正确方法吗?重复使用单元格时会遇到任何问题吗?
答案 0 :(得分:3)
您可以考虑使用带有enumerated type的switch-case
树来替换测试各种硬编码整数的if
条件。 This blog post更详细地解释了此选项。在表格视图中使用switch-case
委托方法将使您的代码更具可读性和灵活性。否则,您的重用代码看起来是正确的。