NSInvalidArgumentException原因Receiver没有带标识符的segue

Sim*_*zen 13 xcode objective-c segue uistoryboardsegue

我有问题,我一直坐着.我有一个UIViewController List和一个UIViewController Login.在Login我有一个按钮"Done",同一个UIViewController上的另一个隐藏按钮有一个segue到List(Type:push).我在xcode的接口构建器中为它命名了一个名为"LoginToList"的标识符.现在从另一个类(一个运行的类Login是活动控制器)我调用:

[[Login sharedLogin] performSegueWithIdentifier:@"LoginToList"];
Run Code Online (Sandbox Code Playgroud)

所述Login类显然有与标识符的SEGUE"LoginToList"

但我一直在:

 'NSInvalidArgumentException', reason: 'Receiver (<Login: 0x6d79d90>) has no segue with identifier 'LoginToList''
Run Code Online (Sandbox Code Playgroud)

+ (id) sharedLogin看起来像这样:

+ (id) sharedLogin {
    static Login *sharedLogin = nil;

    @synchronized(self) {
        if (sharedLogin == nil) {
            sharedLogin = [[self alloc] init];
        }

        return sharedLogin;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道为什么会这么说,我会很高兴听到它!:D我不知道我是否遗漏了一些愚蠢的东西,但我无法发现它:(

编辑:我已经在界面生成器中创建了一个segue(ctrl +点击拖动LoginList),使用UIViewControllers自己(Login&List).然后我命名了segue "LoginToList",换句话说我给了它标识符.我点击了segue,在右上角有一个我用过的"Identifier"字段.

我仍然得到错误说Login没有带标识符的segue "LoginToList".伤心

joh*_*doe 0

不知道你的 init 做了什么......

\n\n

我发现在尝试动态[[alloc] init]一个视图控制器来这样使用时,我必须调用initWithNibName:bundle:,因此我必须将我的视图控制器放在一个单独的 xib 类中,这样它就不会混淆在故事板中并留下有关无法到达的场景的警告。

\n\n

如果没有initWithNibName:bundle:,我的猜测是您在共享登录中对 [[alloc] init] 的调用没有正确地将您已经明确创建的UIStorybardSegue*绑定到登录视图控制器,以便可以从对象中使用它回 。

\n\n

(我的情况是,我在iPad中有一个弹出框,在iPhone中有一个常规导航segue。对于iPhone,我在iPhone中使用带有segue的隐藏按钮,但它正在对毫无疑问已初始化的场景和视图控制器执行segue在 awakeFromNib: . 对于 iPad,我放入一个弹出窗口,并且弹出窗口未连接到任何 \xe2\x80\xa6\xc2\xa0 并使用 initWithNibName:bundle: 初始化到单独的 . xib 文件。]

\n