繁体   English   中英

展开ViewController

[英]Unwind ViewController

我试图在用户单击单元格时展开视图控制器。 我收到了错误的无法识别的选择器,该错误的选择器已发送到实例...当我单击一个单元格时,插入的两个NSLogs不显示,它只是因该错误而崩溃。 这是我的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];

    }
}

您的设置有几处错误。 首先,除非您正在使用放松的segue,否则切勿使用segue向后退。 我不确定这是否是造成您问题的原因,但这绝对是不好的。 由于您执行了从View1到View2的模式转换,因此应该使用dismissViewControllerAnimated:completion:返回,而不是segue(除非我说过要使用展开)。 其次,根本不清楚您要使用标签栏控制器做什么。 我认为,如果您希望View2成为标签栏控制器的第一个标签,则View1的选择应该转到标签栏控制器而不是View2。 我不喜欢以模式方式显示选项卡栏控制器,我认为它们通常应该是窗口的根视图控制器。 View1的目的是什么? 为什么要使用它作为初始视图控制器?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM