Swift pushViewController вызывает сбой приложения - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в стремительной разработке здесь, пытаясь изменить стиль представления для iOS 13, чтобы использовать стиль pu sh. Первоначальный источник использует раскадровку для установки стиля представления для контроллеров представления, но есть одна часть, в которой они переопределяют его с помощью

    override func prepare(for segue: UIStoryboardSegue, sender: Any?)

Мне удалось сделать это с помощью pushViewController, но приложение сразу после этого вылетает, могу я знаете в чем тут проблема? Это полная функция

        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let selectedIndex:Int? = menuTableView.indexPathForSelectedRow?.row


    if (selectedIndex! == 0 || selectedIndex! == 1){
        let submitViewController: SubmitViewController = segue.destination as! SubmitViewController

        if (selectedIndex! == 0){
            submitViewController.currency = Constant.CURRENCY_MYR
        }else{
            submitViewController.currency = Constant.CURRENCY_SGD
        }
    }else if (selectedIndex! == MENU_ACCOUNT_STATISTIC_INDEX){

        let target: SearchResultViewController = segue.destination as! SearchResultViewController


        target.toolbarOption = SearchResultViewToolBarOption.TOOLBAR_SMS
        target.resultContent = self.resultContent

        self.navigationController!.pushViewController(target, animated: true)



    }

Это журнал ошибок, который я получаю

    2020-04-04 14:50:24.227072+0800 vboss[38120:1974490] *** Terminating app due to uncaught          exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <vboss.MenuViewController: 0x7fd906087e00>.'

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Проблема была решена, это было связано с тем, что эта часть использовала переход от раскадровки, который был установлен для другого ViewController. Поэтому все, что мне нужно было сделать, это изменить настройку раскадровки для этого конкретного эпизода, и это решило и для этой части.

0 голосов
/ 04 апреля 2020

Вы можете попробовать вот так:

var selectedIndex : Int = -1

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.selectedIndex = indexPath.row
    if (selectedIndex == 0 || selectedIndex == 1){
        self.performSegue(withIdentifier: "submitViewController", sender: nil)
    }else if (selectedIndex == MENU_ACCOUNT_STATISTIC_INDEX){
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let target = storyboard.instantiateViewController(withIdentifier: "searchResultViewController") as! SearchResultViewController
        target.resultContent = self.resultContent
        navigationController?.pushViewController(target, animated: true)
    }
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let submitViewController: ViewController = segue.destination as! SubmitViewController{
        if (selectedIndex == 0){
            submitViewController.currency = Constant.CURRENCY_MYR
        }else{
            submitViewController.currency = Constant.CURRENCY_SGD
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...