无法使用按钮从一个视图控制器导航到另一个视图

时间:2015-06-24 13:09:30

标签: ios swift cocoa-touch uiviewcontroller

它给出了:

  

信号SIGABRT

日志中的另一个错误是:

  

libc ++ abi.dylib:以NSException类型的未捕获异常终止

@IBAction func loginok(sender: AnyObject) {
    if loginTextField?.text != "monal" && passwordTextField?.text  != "gosai"
    {
        warningLable?.text = "Invalid Credentials"

        loginTextField?.text = ""
        passwordTextField?.text=""
    }
    else
    {
        let View2 = self.storyboard!.instantiateViewControllerWithIdentifier("View2") as! ViewController2
         self.navigationController!.pushViewController(View2, animated: true)

    }
}

3 个答案:

答案 0 :(得分:2)

除非您在故事板中设置了segue,否则

PerformSegueWithIdentifier将无效。如果有,那么在弗朗西斯科所说的else声明中,您应该调用该函数。如果您还没有在Storyboard上设置segue,那么您必须这样做才能使用此方法。

此外,作为惯例,您的@IBAction方法标题应为func loginok(sender: UIButton) {...}

答案 1 :(得分:0)

您需要为segue设置标识符,然后使用

调用它
self.performSegueWithIdentifier("YourIdentifier", sender: self)

答案 2 :(得分:0)

在故事板中单击segue并在Utilities-> Attributes inspector-> Identifier中输入一个名称,我使用" mySegue" 在标识符下方,对于Segue,使其成为模态。

创建一个按钮并按住Ctrl键拖动到m文件: 这是我的代码:

    - (IBAction)nAction:(UIButton *)sender {
        self.mytext =  self.mytextfield.text;
       [self performSegueWithIdentifier:@"mySegue" sender:sender];
    }



    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
        if ([[segue identifier] isEqualToString:@"mySegue"])
        {
        NSLog(@" my segues is called mysegue");
        myViewController *controller = [segue destinationViewController] ;
        controller.textforlabel = self.mytext;
        }

不要忘记在你为segue定义目标viewcontroller的地方加入h文件:)