Удалить индекс из бокового меню для типа пользователя - PullRequest
0 голосов
/ 03 октября 2018

Я реализовал боковое меню в табличном представлении, и теперь мой сценарий выглядит так: мне нужно управлять параметрами бокового меню как типами пользователей

Позвольте мне показать мой код

var items = ["Social Media Post", "Messages", "Manage User","My Account","Information","Logout"]



 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! MenuTableViewCell
        cell.lblTitle.text = items[indexPath.row]
        cell.imgMenuLogo.image = image[indexPath.row]
        print(User_type)
        if User_type == 2{
            items.remove(at: 0)
        }
        return cell
    }

, но теперь я хочу,Мне нравится

   if user_type == "3"{
    // Social Media , Messages And Manage User options i want to remove 

}

Я не могу понять, как удалить из индекса.

Ответы [ 3 ]

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

Попробуйте что-то вроде этого:

override func viewDidLoad() {
    super.viewDidLoad()
    getList()
}

func getList(){
    switch userType{
    case 0:
        items = ["UserTypeOne_Home","UserType_One Settings","etc"]
        break
    case 1:
        items = ["UserTypeTwo_Home","UserType_Two Settings","etc"]
        break
    default:
        break
    }
    self.tableView.reloadData()
}


extension ViewController: UITableViewDelegate,UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: "Some ID")
    cell?.textLabel?.text = items[indexPath.row]
    return cell!
}
}

Старайтесь не изменять массив из метода indexPath в cellForRowAt, используя indexPath.row, который не даст желаемого результата.Модулируйте массив извне переопределений метода протокола и просто вызовите метод reloadData ().

0 голосов
/ 03 октября 2018
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! MenuTableViewCell
    cell.lblTitle.text = items[indexPath.row]
    cell.imgMenuLogo.image = image[indexPath.row]
    print(User_type)
    if User_type == 2{
        items.remove(at: 0)
    }
    return cell
}

Это будет работать, но вы допустили небольшую ошибку здесь.

Вы удалили из массива после установки метки.Поэтому вам нужно сначала удалить элемент из массива, а затем установить метку.

Кстати, я не буду рекомендовать этот метод, так как вам нужно добавлять / удалять из массива для каждого cellForRowAt метода.

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

Попробуйте использовать перечисление UserType и проверить тип текущего пользователя, чем Сделать массив с параметрами по умолчанию, доступными для каждого пользователя, а затем добавить определенные данные в массив в соответствии с типом пользователя.Надеюсь, это проясняет:)

...