Создание indexList без разделов в tableView?

В моем представлении таблицы есть одна секция с сущностями массива, отображаемыми в виде строк. Я пытаюсь создать список индексов, который отображается справа, который я могу настроить, и перейду к определенной строке. Пока я могу показать индекс, но он не переходит к определенной строке при нажатии буквы. Он вернется к первой строке при нажатии «A», но ни один из других вариантов индекса не работает. Есть ли обходной путь для этого?

Обновлено: изучали ответ и до сих пор не можете найти способ сделать это.

   let respiratory = ["A - Patient Disposition Form","B - On Scene Physician","C - APGAR Score","D - LA Prehospital Stroke Screen","E - Pain Scales","F - Restraint Checklist","G - Abbreviations","H - Reperfusion Checklist","I - Difficult Airway","J - Burn Resources","DNR","NCCEP Airway Evaluation Form","NC MOST Form","PREMIS Preliminary Report","NC Eye Bank"]

        let indexList = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","AA"]

        func sectionIndexTitles(for tableView: UITableView) -> [String]? {
            return indexList;
        }
        func sectionIndexTitlesForTableView( for tableView: UITableView) -> [AnyObject]! {
            return respiratory as [AnyObject]
        }
 @IBOutlet weak var animalTableView: UITableView!




    ///Set elements in cell
    func tableView(  _ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "appendicieslist"/*Identifier*/, for: indexPath)
        cell.textLabel?.text = respiratory[indexPath.row]
        // FONT STYLE
        cell.textLabel?.textColor = UIColor.white
        cell.detailTextLabel?.font = UIFont.boldSystemFont(ofSize: 30.0)
        cell.textLabel?.textAlignment = .center
        self.animalTableView.backgroundColor = UIColor.clear
        cell.textLabel?.backgroundColor = UIColor.black

        return cell
    }



    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return respiratory.count
    }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
325
2

Ответы 2

Загвоздка в том, что вы используете табличное представление, содержащее один раздел с множеством строк (вместо множества разделов с одной строкой), но индекс работает по ссылке на разделы, а не на строки.

Из документации класса UITableView:

A table view can have an index that appears as a bar on the right hand side of the table (for example, "A" through "Z"). You can touch a particular label to jump to the target section.

После перехода к табличному представлению на основе разделов вы можете добиться более детального контроля над навигацией, предлагаемой индексом, путем реализации дополнительной функции tableView(_:sectionForSectionIndexTitle:at:).

Всегда остается возможность закодировать собственный настраиваемый индекс, который дублирует функциональность индекса UITableView для строк вместо разделов, но это может быть неэффективным или неприемлемым в зависимости от вашего варианта использования.

Так что лучше всего для меня реорганизовать представление таблицы в разделы и строки для каждого раздела?

wcdean217 18.12.2018 04:03

Что ж, единственный способ использовать индекс раздела, предлагаемый UITableView, - это реорганизовать представление таблицы в разделы. Вероятно, это самый простой способ сделать это, если вы не создаете относительно сложное приложение или не являетесь опытным разработчиком. Другие подходы потребуют от вас затрат времени и усилий на создание или включение настраиваемого индекса табличного представления, такого как MYTableViewIndex.

jamesk 18.12.2018 04:10

@ wcdean217 Как ты прошел?

jamesk 06.01.2019 11:41

Это хакерско, но я думаю, что вы могли бы добавить оператор defer в верхней части sectionForSectionIndexTitle, который обрабатывал бы переход. Не уверен, что это будет хорошо смотреться в большом списке, но, возможно, стоит поэкспериментировать.

func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
    defer { 
        // Handle transition to the correct row here
    }
    return 0 // Only one section so return it
}

Другие вопросы по теме