ios - 如何在 Storyboard 中加载没有按钮的 View Controller ?

标签 ios xcode storyboard

我想加载没有按钮的 View Controller 。我将标识符设置为 10 并尝试使用

if(...){ 
//load ViewController2
UIViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"10"];
[self.navigationController pushViewController:vc];
}

这是我的项目http://www.sendspace.com/file/kfjhd5

有什么问题?

最佳答案

您问题中的上述代码很好。我知道您问的是如何在没有按钮的情况下执行此操作,但您演示的问题是您使用了一个按钮,但没有正确连接到 IBAction .您的 goNext应在您的 .h 中定义为:

- (IBAction)goNext:(id)sender;

实现应该是:
- (IBAction)goNext:(id)sender
{
    UIViewController *vc=[[self storyboard] instantiateViewControllerWithIdentifier:@"10"];
    [self.navigationController pushViewController:vc animated:YES];
}

我想你创造了 IBAction手动。将来值得注意的是,如果您从按钮向下控制拖动(或右键单击拖动)到助手编辑器文件,您可以自动创建 IBAction接口(interface),并且不会发生这种错误:

automate creation of IBAction

顺便说一句,我个人更喜欢使用 segue,所以我首先定义 View Controller 本身之间的 push segue。在 Xcode 6 中,可以从场景上方的 View Controller 图标控制拖动到目标场景:

create segue xcode 6

在 6 之前的 Xcode 版本中,可以从场景下方栏中的 View Controller 图标进行控制拖动:

create segue

然后我在 Interface Builder 中选择 segue 并给它一个“ Storyboard标识符”(在这个例子中,我称之为 pushTo10 ):

specify segue id

然后我有我的goNext执行那个 segue,而不是手动调用 pushViewController :
- (IBAction)goNext:(id)sender
{
    [self performSegueWithIdentifier:@"pushTo10" sender:self];
}

这样做的好处是我的 Storyboard现在直观地代表了我的应用程序的流程(而不是看起来有一个漂浮在那里的场景),并且像导航栏这样的图形元素在 Storyboard中正确表示。

您不必这样做,但这是另一种需要注意的选择。

关于ios - 如何在 Storyboard 中加载没有按钮的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499695/

相关文章:

ios - 是否可以在 swift 项目中将 Storyboard 构建的 ViewController 实例化为导入的 Objective-C 类?

ios - 解析 Facebook 集成

iphone - iOS : Property List Serialization vs. NSUserDefaults 与核心数据中的持久性

python - 编码 json 并将其发送到 Objective C 后端的正确方法是什么?

ios - 水平 UIScrollView - 创建增量卷尺

c++ - 在 XCode 中包装 C++ 库

ios - Cordova 不适用于 iOS 多目标

xcode - NSBundle UIImage nil iOS 7 特定

xcode - 编译失败的 Storyboard

php - 上传图片到服务器不起作用