如何基于JSON数据快速设置RootViewController

时间:2018-06-24 08:37:43

标签: ios iphone swift

我是新手。我正在使用此side menu

在我的项目中,有两个角色:

  1. 经理
  2. 员工

我必须基于JSON数据设置Side菜单和RootVC。在经理侧菜单A,B,C,D,E和在雇员侧菜单A,B,C,D。

在这里我遇到了问题。如果Role == 5(管理员),如何设置SideMenu和RootVc,如果Role == 4(Employee),如何设置SideMenu和RootVc。

在两种情况下,我都必须为经理和员工设置不同的RootVC。

在这里我绘制一种设计image。请有人帮我解决这个问题。

我的Appdelegate代码

@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;
}

Manager JSON数据:

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

1 个答案:

答案 0 :(得分:0)

我通常会这样处理:

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-别忘了在检索JSON之后重新加载tableView:

tableView.reloadData()