Я новичок в свифте. Я использую этот боковое меню.
В моем проекте есть 2 роли:
Мне нужно установить боковое меню и RootVC на основе данных JSON. В боковом меню менеджера A, B, C, D, E и в боковом меню In Employee A, B, C, D.
Здесь я столкнулся с проблемой. Если Role == 5 (Manager), как установить SideMenu и RootVc, а если Role == 4 (Employee) Как установить SideMenu и RootVc.
В обоих случаях мне нужно установить разные RootVC для менеджера и сотрудника.
Здесь я рисую один дизайн изображение. Пожалуйста, помогите мне, как решить эту проблему.
Мой код 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 = "[email protected]";
userId = 32;
};
status = 200;
}
Данные диспетчера JSON:
JSON: {
result = {
"Progress_status" = 0;
Role = 5;
Source = "default-image.jpg";
email = "[email protected]";
userId = 4;
};
status = 200;
}
Привет @ AndréSlotta, я добавил код и данные json.
С какой именно проблемой вы столкнулись? Вы откуда-то вызывали эту функцию loginUser?
Да @Van, я звоню в Эпплгейт. Как установить контроллер корневого представления после входа в систему. Я проверяю его менеджера или сотрудника, если менеджер должен показать GSMyTeamViewController, иначе GSDashboardViewController
Это вы уже написали в своем коде, верно? Итак, дело в том, с какой проблемой вы столкнулись в своем коде? Или ваш вопрос - как вызвать эту функцию loginUser?
Да, я уже установил, но кнопка бокового меню не отображается в верхней левой панели.





Обычно я справляюсь с этой ситуацией так:
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()
спасибо за ответ, а вот как установить RootVC. В моем случае менеджер RootVC другой, а сотрудник RootVC другой.
Можете ли вы показать код того, что вы пробовали, и как выглядит ваш JSON?