presentViewController - 查看纯黑色,未调用viewDid___方法

时间:2012-04-05 14:28:00

标签: objective-c xcode modalviewcontroller

    ...
    SecondViewController *svc = [SecondViewController new];
    [self presentViewController:svc animated:YES completion:NULL];
}

此代码与我在其他应用中使用的代码完全相同,但此处我使用presentViewController而不是presentModalViewController
completion:NULL使它们实际上完全相同。至少相同的结果。)

创建模态视图的两种尝试都以相同的方式构建。主视图中的那些行,Storyboard中的视图控制器以及匹配的.h.m文件。唯一的区别是,在这里我想要一个程序化的触发器,所以不可能拖动一个segue并完成它。
我有一个对象设置来识别手势并调用转换方法。这可能是造成问题的原因(至少是其中的一部分),但这是必要的。

使用UIButton会作弊。没有截止日期,没有捷径。

编辑: NSLog输出显示奇怪的东西。

2012-04-05 10:41:12.047 MyApp[5962:707] <SecondViewController: 0x1d8c130>
2012-04-05 10:41:12.479 MyApp[5962:707] <SecondViewController: 0x1d8e360>

所以我再做一些愚蠢的事情,碰巧有一个非常简单的解决方法,对吧? 再次编辑:presentViewController…被多次调用。固定它。但仍然是黑色。


返回performSegueWithIdentifier:sender:而不是更容易presentViewController:animated:completion:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'Receiver ...没有带标识符的segue''

我告诉它要执行一个segue,但是故事板中没有一个(我不能添加一个,对象I的'Connections inspector'下没有Storyboard Segues部分'试图使用),所以它崩溃了。这是正常行为。

我想要的是一个模态视图,而不需要创建一个segue。我已经完成了,所以我知道这是可能的 我需要的只是帮助它发挥作用。

performSegueWithIdentifier:@"Identifier" sender:nil NSSInvalidArgumentException
presentViewController:viewController animated:YES completion:NULL 空视图

2 个答案:

答案 0 :(得分:12)

知道了。

用以下代码替换问题中的行:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard"
                                                     bundle:nil];
SecondViewController *viewController =
            [storyboard instantiateViewControllerWithIdentifier:@"SecondView"];
[self presentViewController:svc animated:YES completion:NULL];

这个解决方案的功劳归功于IturPablo自己回答的问题:
TabBarController, overwriting shouldSelectViewController to do a segue

答案 1 :(得分:1)

您在寻找performSegueWithIdentifier:sender:吗?文档似乎与您的描述相符:

  

“你可以调用这个方法以编程方式触发segue   响应故事板中无法指定的某些操作   资源文件“