我试图在不使用segue的情况下导航到一个场景。我使用的代码如下所示:
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
MyViewController * controller = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:viewControllerID];
[self presentViewController:controller animated:YES completion:nil];
我的问题是为这个场景设置委托。通常我会做以下事情:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Check the segue identifier
if ([[segue identifier] isEqualToString:@"showDetail"])
{
[[segue destinationViewController] setDelegate:self];
}
}
但我不想使用segues。谁能告诉我如何为场景设置代表?
由于
答案 0 :(得分:2)
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
DetailViewController * controller = (DetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DetailView"];
controller.delegate = self;
[self presentViewController:controller animated:YES completion:nil];
答案 1 :(得分:0)
你可以为你正在加载的场景设置代表。
您的“destinationViewController”将有一个方法“ViewWillAppear”。 在那里你可以将委托设置为自己。
答案 2 :(得分:0)
因为你已经有了对新控制器的引用,所以你不需要在行之后实现prepareForSegue:sender:
方法:
MyViewController * controller = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:viewControllerID];
只需添加:
[controller setDelegate:self];