2016-03-24 1 views
0

Я хочу перейти к другому контроллеру представления при нажатии кнопки my btnSignUp, если я пишу код, как это, у меня есть ошибка «sigabrt». Что я должен делать?Sigabrt при попытке отобразить другой контроллер вида

import UIKit 
import SnapKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     self.view.backgroundColor = UIColor(red: 15/255, green: 52/255, blue: 100/255, alpha: 1) 

     createTop() 

    } 

    override func didReceiveMemoryWarning() { 

super.didReceiveMemoryWarning() 

} 

    func createTop() { 

     let topView = UIView() 

     self.view.addSubview(topView) 

     topView.backgroundColor = UIColor(red: 15/255, green: 52/255, blue: 100/255, alpha: 1) 

     topView.snp_makeConstraints { (make) -> Void in 

      make.width.equalTo((self.view.frame.width/10)*8) 
make.height.equalTo(self.view.frame.height/5) 

      make.centerX.equalTo(self.view) 

      make.top.equalTo(self.view).offset(self.view.frame.height/15) 
     } 



     let btnSignUp = UIButton() 

     self.view.addSubview(btnSignUp) 

     btnSignUp.backgroundColor = UIColor(red: 15/255, green: 52/255, blue: 100/255, alpha: 1) 

     btnSignUp.layer.borderColor = UIColor.whiteColor().CGColor 

     btnSignUp.layer.borderWidth = 1 

     btnSignUp.layer.cornerRadius = 6 

     btnSignUp.setTitle("Sign Up", forState: UIControlState.Normal) 

     btnSignUp.titleLabel?.font = UIFont(name: "AvenirNext-Regular", size: 17) 

     btnSignUp.snp_makeConstraints { (make) -> Void in 

make.width.equalTo(((self.view.frame.width/10)*7)+40) 

      make.height.equalTo(self.view.frame.height/13) 

      make.top.equalTo(ORView.snp_bottom).offset(20) 

      make.centerX.equalTo(self.view) 
     } 

     btnSignUp.addTarget(self, action: "buttonAction", forControlEvents: UIControlEvents.TouchUpInside) 

    func buttonAction(sender:UIButton!) 
     { 

      let signUpVC = SignUpViewController() 

      self.presentViewController(signUpVC, animated: true, completion: nil) 

     } 

    } 
} 
+0

являются вы используете xib или раскадровку? – HardikDG

+0

Snap Kit, а не раскадровка –

ответ

0

Ваш селектор действия buttonAction не соответствует вашей декларации функции - Он принимает аргумент, поэтому селектор будет buttonAction:

btnSignUp.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) 

Кроме того, проверьте круглые скобки. Оказывается, что ваша buttonAction функция объявлена ​​внутриfunc createTop()

func createTop() { 

    let topView = UIView() 

    self.view.addSubview(topView) 

    topView.backgroundColor = UIColor(red: 15/255, green: 52/255, blue: 100/255, alpha: 1) 

    topView.snp_makeConstraints { (make) -> Void in 

     make.width.equalTo((self.view.frame.width/10)*8) 
make.height.equalTo(self.view.frame.height/5) 

     make.centerX.equalTo(self.view) 

     make.top.equalTo(self.view).offset(self.view.frame.height/15) 
    } 

    let btnSignUp = UIButton() 

    self.view.addSubview(btnSignUp) 

    btnSignUp.backgroundColor = UIColor(red: 15/255, green: 52/255, blue: 100/255, alpha: 1) 

    btnSignUp.layer.borderColor = UIColor.whiteColor().CGColor 

    btnSignUp.layer.borderWidth = 1 

    btnSignUp.layer.cornerRadius = 6 

    btnSignUp.setTitle("Sign Up", forState: UIControlState.Normal) 

    btnSignUp.titleLabel?.font = UIFont(name: "AvenirNext-Regular", size: 17) 

    btnSignUp.snp_makeConstraints { (make) -> Void in 

     make.width.equalTo(((self.view.frame.width/10)*7)+40) 
     make.height.equalTo(self.view.frame.height/13) 
     make.top.equalTo(ORView.snp_bottom).offset(20) 
     make.centerX.equalTo(self.view) 
    } 

    btnSignUp.addTarget(self, action: "buttonAction", forControlEvents: UIControlEvents.TouchUpInside) 
} 

func buttonAction(sender:UIButton!) { 

    let signUpVC = SignUpViewController() 
    self.presentViewController(signUpVC, animated: true, completion: nil) 
} 

Наконец, я сомневаюсь, что вы хотите, чтобы получить новый контроллер представления по SignUpViewController() - если вы используете раскадровку вы хотите позвонить instantiateViewControllerWithIdentifier

+0

У меня есть нить 1: сигнал SIGABRT ошибка, как решить эту проблему, помогите мне, я потрачу два дня, чтобы решить эту проблему. –

+0

Установите контрольную точку исключения. На какой линии он падает? – Paulw11

+0

sigabrt поставляется во многих сценариях, разрешает зомби и проверяет –