所以,这就是交易。我的 xib 中有 16 个按钮,每个按钮都在其控制器中使用以下代码进行实例化:
IBOutlet UIButton *left1;
IBOutlet UIButton *left2;
IBOutlet UIButton *left3;
IBOutlet UIButton *left4;
IBOutlet UIButton *left5;
IBOutlet UIButton *left6;
IBOutlet UIButton *left7;
IBOutlet UIButton *left8;
IBOutlet UIButton *right1;
IBOutlet UIButton *right2;
IBOutlet UIButton *right3;
IBOutlet UIButton *right4;
IBOutlet UIButton *right5;
IBOutlet UIButton *right6;
IBOutlet UIButton *right7;
IBOutlet UIButton *right8;
当其中一个被按下时,它应该根据按下的按钮来推送带有对象的视图。我是这样做的:
if (upperLower.selectedSegmentIndex == 0) {
if (sender == left1) {
aTooth = [aPatient.teeth objectForKey:@"11"];
} else if (sender == left2) {
aTooth = [aPatient.teeth objectForKey:@"12"];
} else if (sender == left3) {
aTooth = [aPatient.teeth objectForKey:@"13"];
} else if (sender == left4) {
aTooth = [aPatient.teeth objectForKey:@"14"];
} else if (sender == left5) {
aTooth = [aPatient.teeth objectForKey:@"15"];
} else if (sender == left6) {
aTooth = [aPatient.teeth objectForKey:@"16"];
} else if (sender == left7) {
aTooth = [aPatient.teeth objectForKey:@"17"];
} else if (sender == left8) {
aTooth = [aPatient.teeth objectForKey:@"18"];
} else if (sender == right1) {
aTooth = [aPatient.teeth objectForKey:@"21"];
} else if (sender == right2) {
aTooth = [aPatient.teeth objectForKey:@"22"];
} else if (sender == right3) {
aTooth = [aPatient.teeth objectForKey:@"23"];
} else if (sender == right4) {
aTooth = [aPatient.teeth objectForKey:@"24"];
} else if (sender == right5) {
aTooth = [aPatient.teeth objectForKey:@"25"];
} else if (sender == right6) {
aTooth = [aPatient.teeth objectForKey:@"26"];
} else if (sender == right7) {
aTooth = [aPatient.teeth objectForKey:@"27"];
} else if (sender == right8) {
aTooth = [aPatient.teeth objectForKey:@"28"];
}
}
else {
if (sender == left1) {
aTooth = [aPatient.teeth objectForKey:@"41"];
} else if (sender == left2) {
aTooth = [aPatient.teeth objectForKey:@"42"];
} else if (sender == left3) {
aTooth = [aPatient.teeth objectForKey:@"43"];
} else if (sender == left4) {
aTooth = [aPatient.teeth objectForKey:@"44"];
} else if (sender == left5) {
aTooth = [aPatient.teeth objectForKey:@"45"];
} else if (sender == left6) {
aTooth = [aPatient.teeth objectForKey:@"46"];
} else if (sender == left7) {
aTooth = [aPatient.teeth objectForKey:@"47"];
} else if (sender == left8) {
aTooth = [aPatient.teeth objectForKey:@"48"];
} else if (sender == right1) {
aTooth = [aPatient.teeth objectForKey:@"31"];
} else if (sender == right2) {
aTooth = [aPatient.teeth objectForKey:@"32"];
} else if (sender == right3) {
aTooth = [aPatient.teeth objectForKey:@"33"];
} else if (sender == right4) {
aTooth = [aPatient.teeth objectForKey:@"34"];
} else if (sender == right5) {
aTooth = [aPatient.teeth objectForKey:@"35"];
} else if (sender == right6) {
aTooth = [aPatient.teeth objectForKey:@"36"];
} else if (sender == right7) {
aTooth = [aPatient.teeth objectForKey:@"37"];
} else if (sender == right8) {
aTooth = [aPatient.teeth objectForKey:@"38"];
}
}
toothController.aTooth = aTooth;
toothController.aPatient = aPatient;
if (aTooth) {
[self.navigationController pushViewController:toothController animated:YES];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Tooth not found" message:@"The patient doesn't have that tooth" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
[aTooth release];
现在的问题是我无法弄清楚为什么如果我按 left1、left2 或 left3 会完美运行。现在,如果我按 left4,它会崩溃,有时会出现异常(NSCFArray number unrecognized selector sent blalbal),有时会出现异常。所有编号为 11、12、13 和 14 的牙齿都存在于一个阵列中。我只尝试了这些,因为我懒得创建 36 个。但是为什么它只对数字 14 不起作用?
几个小时以来,我一直试图解决这个问题,但没有成功。任何帮助表示赞赏。
更新:(上次更新错误)我从解析牙齿的 xml 中删除了 14 号牙齿,并添加了 15 号牙齿。问题仍然存在于 15 号牙齿并显示正确的消息(牙齿不存在)齿数 14。
更新 2:我在 [aTooth 发布] 之后添加了一个“aTooth = nil”,现在我可以接触到 15 颗牙齿,但我无法两次接触到任何牙齿。一旦我接触到一颗牙齿,如果不重新编译,我就无法回到那里。