- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath section] == 0) {
switch ([indexPath row]) {
case 0:
[self renameExercise];
[[self tableView] deselectRowAtIndexPath:indexPath
animated:YES];
break;
case 1:
EditRootNoteViewController *newController = [[EditRootNoteViewController alloc] initWithNibName:@"EditNoteView"
bundle:nil];
[newController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[newController setDelegate:self];
[self presentModalViewController:newController
animated:YES];
[newController release];
break;
答案 0 :(得分:2)
尝试将代码放在一个块中:
...
switch ([indexPath row]) {
case 0:
[self renameExercise];
[[self tableView] deselectRowAtIndexPath:indexPath
animated:YES];
break;
case 1: {
EditRootNoteViewController *newController = [[EditRootNoteViewController alloc] initWithNibName:@"EditNoteView" bundle:nil];
[newController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[newController setDelegate:self];
[self presentModalViewController:newController animated:YES];
[newController release];
} break;
}
或者更好的是,将该代码提取到一个单独的方法中。
答案 1 :(得分:2)
这是因为你不能将变量声明为switch语句中case的第一个语句。
有关详细信息,请参阅this question或this question。
答案 2 :(得分:1)
这是你的整个开关声明吗?如果是这样,你就忘记了
default:
break;
部分。
确保您的问题包含完整方法,或至少包括完整方法,以便我们更轻松地提供帮助。
编辑: 哦!在第二次查看之后,如果在switch语句中声明新变量,则必须在大括号内执行此操作。不确定为什么,几个星期前我遇到了这个问题。也许有人可以详细说明为什么需要它?