Перейдите для просмотра контроллеров в классе типов NSObject - PullRequest
0 голосов
/ 31 октября 2018

Это мой код. Это класс NSObject, в котором реализовано табличное представление для отображения меню. Нажав на ячейку табличного представления, я хочу перейти к другому контроллеру представления.

class SideMenuController: NSObject, UITableViewDelegate, UITableViewDataSource {
    private weak var navigationController: UINavigationController?
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let window: UIWindow = UIApplication.shared.keyWindow!
        //print(indexPath.row)
        if indexPath.row == 1 {
            //print("1 is")
            let storybord = UIStoryboard(name: "Main", bundle: nil)
            //let nextvc = storybord.instantiateViewController(withIdentifier: "manageprofilevcid") as! ManageProfileViewController
            let viewController = storybord.instantiateViewController(withIdentifier: "manageprofilevcid") as! ManageProfileViewController
            //let navi = UINavigationController(rootViewController: viewController)
            navigationController?.pushViewController(viewController, animated: true)
            handleDismiss()
            //let ll = navigation
        }
    }
}

Но я не могу перейти к другому контроллеру представления. Есть ли какой-нибудь код, который будет работать в этом классе NSObject для выполнения навигации к определенному контроллеру представления?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Проверьте следующие пункты:

1. Наследование от NSObject не имеет никакого смысла. UIViewController уже делает это.

class SideMenuController: UIViewController, UITableViewDelegate, UITableViewDataSource {

2. Убедитесь, что вы установили делегат tableView и источник данных.

tableView.dataSource = self
tableView.delegate = self

3. Где код для создания экземпляра UINavigationController? Если ваш SideMenuController уже встроен в navigationController, создавать новый экземпляр не нужно.

Уточните здесь использование private weak var navigationController: UINavigationController?.

0 голосов
/ 31 октября 2018

В вашем NSObect классе SideMenuController вы создали переменную navigationController, которую вы используете для navigationController?.pushViewController.

В главном контроллере вы должны создать переменную SideMenuController. В это добавьте:

self.sideMenuController.navigationController = self.navigationController

и перед использованием navigationController?.pushViewController проверьте, является ли navigationController нулем или нет. Вы должны удалить объявление private, чтобы использовать переменную navigationController в контроллере основного вида.

Вы не добавили код контроллера основного вида, поэтому я ответил в соответствии с предположениями. Надеюсь, это поможет.

Вы также можете пойти с Protocols, созданным в SideMenuController и написать код сегментов или навигации в главном контроллере вида.

...