26

我必须以编程方式创建一个segue,但是当我单击按钮时,视图控制器不会更改为下一个,Storyboard ID 已设置但仍无法正常工作。为了完成这项工作,我是否遗漏了任何其他检查?

请看下面的代码:

EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];

它让我发疯。谢谢

4

6 回答 6

34

在我的 viewDidLoad 中,我放置了调用 goldStarOpen 的按钮:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeCustom];
btnTwo.frame = CGRectMake(250, 20, 40, 40);
[btnTwo addTarget:self action:@selector(goldStarOpen) forControlEvents:UIControlEventTouchUpInside];
[btnTwo setImage:[UIImage imageNamed:@"GoldStar.png"] forState:UIControlStateNormal];
[self.view addSubview:btnTwo];

在 goldStarOpen 我有几乎和你一样的代码。

- (void)goldStarOpen
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
                                @"MainStoryboard" bundle:[NSBundle mainBundle]];
    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"GoldStar"];
    [self presentViewController:myController animated:YES completion:nil];
}

goldStarOpen 激活情节提要中的 ViewController。

您可能需要设置您尝试加载的 View Controller 的 Storyboard ID。它位于检查器中,就在您将自定义类分配给视图控制器的下方。

在此处输入图像描述

于 2013-11-01T12:28:02.217 回答
6

利用

 + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil. 

所以试试这个

self.storyboard=[UIStoryboard storyboardWithName:@"Your_Story_Board_Name" bundle:[NSBundle mainBundle]];
EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];
于 2013-06-13T13:26:46.073 回答
4

试试这个 Storyboard 选择 UIViewController-> Xcode->Editor->Embed In->Navigation Controller

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"YourStoryboard"
                                                         bundle: nil];

YourViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"YourViewController"];
[self.navigationController pushViewController:vc animated:YES];
于 2015-07-14T06:16:44.127 回答
2

尝试这个,

 UIStoryboard *    storyboardobj=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

 EntryViewController *entryController = [storyboardobj instantiateViewControllerWithIdentifier:@"go"];
[self.navigationController pushViewController:entryController animated:YES];
于 2013-06-13T13:37:34.057 回答
0

您不能设置视图控制器storyboard。它是只读的,并在创建视图控制器时设置。相反,您需要从其他地方获取故事板或加载它。

您可以从 AppDelegate 的根视图控制器获取故事板。或使用+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil.

于 2013-06-13T13:28:01.133 回答
0

今天遇到这个问题,在右侧面板上清楚地设置了 Storyboard ID,但我仍然收到警告说 VC 无法访问并且没有设置标识符。在我取消选中“从目标继承模块”框并运行项目后修复了该问题。

在此处输入图像描述

代码成功运行后,无论是否选中该框,它现在似乎都可以工作,因此它可能是一个 Xcode 错误......无论如何希望这会有所帮助。

于 2019-03-19T00:33:33.043 回答