1

当用户单击单元格时,我试图展开视图控制器。我收到错误无法识别的选择器发送到实例...当我单击一个单元格时,我插入的两个 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];

    }
}
4

1 回答 1

0

您的设置有几处问题。首先,你不应该使用 segue 倒退,除非你使用的是 unwind segue。我不确定这是否是导致您的问题的原因,但这绝对是坏事。由于您进行了从 View1 到 View2 的模态转换,因此您应该返回dismissViewControllerAnimated:completion:,而不是segue(除非,正如我所说,您想使用展开)。其次,完全不清楚你想用标签栏控制器做什么。我认为,如果您希望 View2 成为标签栏控制器的第一个标签,那么来自 View1 的 segue 应该转到标签栏控制器而不是 View2。我不喜欢模态显示标签栏控制器,我认为它们通常应该是窗口的根视图控制器。View1 的目的是什么?为什么将它作为初始视图控制器?

于 2013-08-24T04:58:01.647 回答