我试图在用户点击单元格时展开视图控制器。我将错误无法识别的选择器发送到实例...当我单击一个单元格时,我插入的两个NSLog不会显示,它只是因为该错误而崩溃。这是我的PrepareForSegue方法的代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSString *pointsPath = [[NSString alloc] initWithFormat:@"totalPoints"];
NSString *primaryPath = [[NSString alloc] initWithFormat:@"type"];
int primaryType = [[NSUserDefaults standardUserDefaults]integerForKey:primaryPath];
int totalPoints = [[NSUserDefaults standardUserDefaults]integerForKey:pointsPath];
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"classType"];
if([sender row] == 0)
{
NSLog(@"Chose 0");
if(primaryType > 0)
{
[[NSUserDefaults standardUserDefaults]setInteger:0 forKey:primaryPath];
int newPoints = totalPoints - 1;
[[NSUserDefaults standardUserDefaults]setInteger:newPoints forKey:pointsPath];
[[NSUserDefaults standardUserDefaults] synchronize];
}
else if (primaryType == 0)
{
[[NSUserDefaults standardUserDefaults]setInteger:0 forKey:primaryPath];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}
else if([sender row] > 0 && [sender row] < [self.guns count])
{
int rowNumba = [sender row];
NSLog(@"You chose row #%i", rowNumba);
int numberToSave = [sender row];
if(totalPoints < 10)
{
if(primaryType != 0)
{
[[NSUserDefaults standardUserDefaults]setInteger: numberToSave forKey:primaryPath];
[[NSUserDefaults standardUserDefaults]synchronize];
}
else if (primaryType == 0)
{
[[NSUserDefaults standardUserDefaults]setInteger:numberToSave forKey:primaryPath];
int newPoints = totalPoints + 1;
[[NSUserDefaults standardUserDefaults]setInteger:newPoints forKey:pointsPath];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
else if (totalPoints >= 10 && primaryType != 0)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Too many points!"
message:@"You have the maximum amount of points"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
答案 0 :(得分:0)
您的设置存在一些问题。首先,你不应该使用segue向后,除非你使用了解开segue。我不确定这是什么导致你的问题,但这绝对是坏事。由于你从View1到View2进行模态转换,你应该使用dismissViewControllerAnimated:completion:,而不是segue(除非,正如我所说你想要使用展开)。其次,用标签栏控制器尝试做什么并不清楚。我认为如果你想让View2成为标签栏控制器的第一个标签,那么来自View1的segue应该转到标签栏控制器而不是View2。我不喜欢以模态方式显示标签栏控制器,我认为它们通常应该是窗口的根视图控制器。 View1的目的是什么?为什么你有一个初始视图控制器?