Завершение работы с необработанным исключением типа NSException — программный переход к другому контроллеру представления

Когда я нажимаю кнопку, я хочу вызвать контроллер представления сведений о компании программно (без раскадровки), но получаю ошибку NSException для функции кнопки . Я считаю, что CompanyDetailsViewController() является нулевым, и я не уверен, почему, потому что я создал класс с именем CompanyDetailsViewController

func detailsButtonTapped(sender: UIButton!) {
    let companyDetailsViewController = CompanyDetailsViewController()
    self.navigationController?.pushViewController(companyDetailsViewController, animated: true)
}

Сведения о компании Посмотреть класс контроллера

import UIKit

class CompanyDetailsViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
 var tableView: UITableView  =   UITableView()
 let animals : [String] = ["Dogs","Cats","Mice"]

  override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.blue
  }

  //code for create table view, etc
}

person 14wml    schedule 07.01.2017    source источник
comment
(1) Почему бы не использовать современные инструменты (2) Возможно, дубликат stackoverflow.com/questions/2688659/   -  person SwiftArchitect    schedule 07.01.2017
comment
для меня ваш код выглядит нормально.   -  person Ashok R    schedule 07.01.2017
comment
Swift - программно перейти к другому контроллеру/сцене представления: в другую сцену контроллера представления"> stackoverflow.com/questions/27374759/   -  person Ashok R    schedule 07.01.2017
comment
@SwiftArchitect я новичок в iOS. когда вы говорите, почему бы не использовать современные инструменты, вы имеете в виду раскадровку?   -  person Ashok R    schedule 07.01.2017
comment
Абсолютно - Если вы новичок, это еще одна причина для создания программного обеспечения мирового класса с помощью инструмента Word Class.   -  person SwiftArchitect    schedule 07.01.2017
comment
@Ashok Вопрос, который вы задали, касается перехода к другому контроллеру представления с помощью раскадровки. Я НЕ хочу использовать раскадровку   -  person 14wml    schedule 07.01.2017
comment
@SwiftArchitect Привет, спасибо за ответ! (1) Я не использую раскадровку, потому что это групповое приложение, поэтому даже ошибку одного человека в раскадровке будет чрезвычайно сложно найти и исправить, особенно с помощью github (2) К сожалению, этот ответ находится в Objective C, и было бы здорово, если бы вы ответ Swift 3.0   -  person 14wml    schedule 07.01.2017


Ответы (1)


Решено! Это была ошибка с вызовом селектора кнопки, потому что я не знал, что вызов селектора был изменен с помощью Swift 3.

class CompanyViewController: UIViewController {
    override func viewDidLoad() {
        button.addTarget(self, action: #selector(CompanyViewController.detailsButtonTapped(button:)), for: .touchUpInside)    
    }


    func detailsButtonTapped(button: UIButton!) {
        let companyDetailsViewController = CompanyDetailsViewController()
        self.navigationController?.pushViewController(companyDetailsViewController, animated: true)
    }
}
person 14wml    schedule 07.01.2017