Почему мой заголовок и изображение меняются все время, когда я нажимаю на свой проект? - PullRequest
1 голос
/ 29 мая 2019

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

Вот код для контроллера вида.

func showList() {
    let actionsKeys = Array(actionsDir.keys)
    let iconStrings = Array(iconsDir.values)
    let items = Observable.just(actionsKeys)
    _ = items.bind(to:collectionView.rx.items) { (tableView, row, structured) in
        do {
            let cell = tableView.dequeueReusableCell(withReuseIdentifier: "ProjectOverviewCell", for: IndexPath(row: row, section: 0)) as! ProjectOverviewCell
            cell.titelLabel.text = actionsKeys[row]
            cell.imageView.image = UIImage(named: iconStrings[row])
            cell.imageView.tintColor = UIColor.darkGray
            return cell
        }
    }

    _ = collectionView.rx.modelSelected(String.self).subscribe(onNext: { pnc in
        let storyBoard = UIStoryboard(name:"Main", bundle:nil)
        let newController = storyBoard.instantiateViewController(withIdentifier: self.actionsDir[pnc]!)
        newController.navigationItem.title = pnc
        self.containerView.addSubview(newController.view)  
    })

Заказ должен быть твердым.

1 Ответ

2 голосов
/ 29 мая 2019

Создайте структуру с вашей таблицей, значком и именем контроллера в качестве свойства и сохраните эту структуру в массиве

struct Action {
    let label: String
    let control: String
    let icon: String
}

let actions = [Action(label: "Pläne", control: "PlansViewController2", icon: "plancorrection"), 
               Action(label: "Dokumentationen", control: "DocumentationListViewCtrl", icon: "list"), ...]

и затем получить все необходимые значения из одного массива

cell.titelLabel.text = actions[row].label
cell.imageView.image = UIImage(named: actions[row].icon)
cell.imageView.tintColor = UIColor.darkGray

Чтобы получить правильный идентификатор для контроллера вида

if let action = actions.first(where: {$0.label == pnc}) {
    let newController = storyBoard.instantiateViewController(withIdentifier: action.control)
} else {
    //some error handling here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...