Как установить RootViewController на основе данных JSON в Swift - PullRequest
0 голосов
/ 24 июня 2018

Я новичок в Swift.Я использую это боковое меню .

В моем проекте есть 2 роли:

  1. Менеджер
  2. Сотрудник

Мне нужно установить боковое меню и RootVC на основена данных JSON.В боковом меню менеджера A, B, C, D, E и в боковом меню сотрудника A, B, C, D.

Здесь я столкнулся с проблемой.Если Роль == 5 (Менеджер), как мне установить SideMenu и RootVc и если Роль == 4 (Сотрудник) Как установить SideMenu и RootVc.

В обоих случаях мне нужно установить разные RootVC для менеджера и сотрудника.

Здесь я рисую один рисунок image .Пожалуйста, кто-нибудь, помогите мне решить эту проблему.

Код моего приложения Applelegate

@objc func loginUser() {
        let userId = UserDefaults.standard.string(forKey: "userId")
        let role = UserDefaults.standard.integer(forKey: "Role")
        if userId == nil{
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "GSLogOutViewController")
            self.window?.rootViewController?.present(controller, animated: true, completion: nil)
            self.window?.makeKeyAndVisible()
        }else{
            var initialViewController = UIViewController()
            let storyboard = UIStoryboard(name: "Main", bundle: nil)

            if role == 5{
                initialViewController = storyboard.instantiateViewController(withIdentifier: "GSMyTeamViewController") as! GSMyTeamViewController
            }
            else if role == 4{
                initialViewController = storyboard.instantiateViewController(withIdentifier: "GSDashboardViewController") as! GSDashboardViewController
            }
            self.window?.rootViewController = initialViewController
            self.window?.makeKeyAndVisible()
        }
    }

Данные сотрудника JSON:

JSON: {
    result =     {
        "Progress_status" = 0;
        Role = 4;
        Source = "default-image.jpg";
        email = "appu.y@gmail.com";
        userId = 32;
    };
    status = 200;
}

Данные менеджера JSON:

JSON: {
        result =     {
            "Progress_status" = 0;
            Role = 5;
            Source = "default-image.jpg";
            email = "daya@gmail.com";
            userId = 4;
        };
        status = 200;
    }

1 Ответ

0 голосов
/ 25 июня 2018

Я обычно имею дело с этой ситуацией следующим образом:

1- Добавьте все опции как для менеджера, так и для сотрудника (то есть: [A, B, C, D, E]) в виде таблицы бокового меню

2- После получения ответа JSON проверьте тип пользователя (руководитель или сотрудник)

3 - переопределить функцию делегата tableView tableView(_:heightForRowAt:):

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    switch indexPath.row {
        case 4:
            // 'E' row -> use ternary operator here to check the user role
            // if it's Manager the cell height will be 40.0 (for example)
            // if it's Employee the 'E' row height will be 0.0 (i.e: hidden)
            return role == "Employee" ? 0.0 : 40.0
        break
        default:
            //other rows
            return 40.0
        break
    }
}

4- Нене забудьте перезагрузить tableView после получения JSON:

tableView.reloadData()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...