我是新手。我正在使用此side menu。
在我的项目中,有两个角色:
我必须基于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;
}
答案 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()