展开ViewController

时间:2013-08-24 00:12:58

标签: iphone ios

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

    }
}

1 个答案:

答案 0 :(得分:0)

您的设置存在一些问题。首先,你不应该使用segue向后,除非你使用了解开segue。我不确定这是什么导致你的问题,但这绝对是坏事。由于你从View1到View2进行模态转换,你应该使用dismissViewControllerAnimated:completion:,而不是segue(除非,正如我所说你想要使用展开)。其次,用标签栏控制器尝试做什么并不清楚。我认为如果你想让View2成为标签栏控制器的第一个标签,那么来自View1的segue应该转到标签栏控制器而不是View2。我不喜欢以模态方式显示标签栏控制器,我认为它们通常应该是窗口的根视图控制器。 View1的目的是什么?为什么你有一个初始视图控制器?