所以我有我的UITableView,每个都有2个部分和1个单元格,如果我点击第一个,它可以工作,然后是第二个,它会转到第一个控制器。 RootViewController是一个navigationController,试图推送到ViewControllers。
这是tableView的代码:
// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0)
return 1;
else
return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if(section == 0){
return @"Terminal/SSH Guides";
}else{
return @"Cydia Tutorials";
}
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
if(indexPath.section == 0){
cell.text = @"Changing Password for root";
} else {
cell.text = @"Hiding Sections";
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
id newController;
switch (indexPath.row) {
case 0:
newController = [[rootpassword alloc] initWithNibName:@"rootpassword" bundle:nil];
break;
case 1:
newController = [[hidingsections alloc] initWithNibName:@"hidingsections" bundle:nil];
break;
default:
break;
}
[self.navigationController pushViewController:newController animated:TRUE];
[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
}
我也在向部分添加更多部分和行/单元格时遇到了问题。
感谢。
答案 0 :(得分:1)
每个部分只有一行,因此indexPath.row将始终为零。在didSelectRowAtIndexPath中,您必须测试该部分而不是行(假设您打算每个部分只保留一行)。
答案 1 :(得分:1)
我相信你应该通过indexPath.section而不是indexPath.row在“didSelectRowAtIndexPath”中进行切换,因为两个部分只有一行。