2012-04-05 45 views
5
... 
    SecondViewController *svc = [SecondViewController new]; 
    [self presentViewController:svc animated:YES completion:NULL]; 
} 

此代码是完全一样,我在另一个应用程序中使用,但在这里我使用presentViewController而不是presentModalViewController
completion:NULL使他们有效相同相同。结果,至少)presentViewController - 查看纯黑色,viewDid___方法不叫

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

使用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”,原因是:‘接收器...与标识符的赛格瑞......’

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

我想要的是有一个模式的看法没有需要创建一个SEGUE。我已经完成了,所以我知道这是可能的。
所有我需要的是帮助它的工作。

performSegueWithIdentifier:@"Identifier" sender:nilNSSInvalidArgumentException
presentViewController:viewController animated:YES completion:NULL空查看

回答

12

“你可以回应一些动作不能在故事板 资源文件中指定调用此方法以编程方式触发SEGUE,也许 ”得到它了。这个解决方案去IturPablo的自我回答问题

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

信用:
TabBarController, overwriting shouldSelectViewController to do a segue

+0

嘿兄弟,很好的回答,你是摇滚明星兄弟!爱那个狗屎!谢谢您的帮助 – iProRage 2012-10-09 02:15:35

1

您是否在寻找performSegueWithIdentifier:sender:?该文档似乎与你的描述:

+0

这是不是在所有的工作(错误是一些有关

这种替换的问题行接收器没有一个segue标识符),所以我想我会回落在简单的礼物/解雇模态视图。 – Thromordyn 2012-04-05 14:47:23

+0

如果我碰巧将故事板中的segue的开头连接到控制器,而不是我称之为的方法,那么通常会出现**错误。 – 2012-04-05 15:02:26

+0

我确保所有视图/标识符/等名称都是正确的。即使我已经设法使其工作,它仍然需要我重新修改UI以适应另一个按钮。 (这个视图(实际上并没有被称为“第二个”)没有计划好,所以没有足够的空间来容纳另一个对象。) – Thromordyn 2012-04-05 15:08:33