Как создать многоуровневые представления в стиле NSTableView? - PullRequest
1 голос
/ 25 сентября 2011

У меня есть проект, который имеет несколько уровней.Я не нахожу правильный способ начать.Макеты проекта имеют иерархическую структуру (древовидную структуру).В ней почти 10 уровней.Итак, как реализовать эти уровни в нескольких табличных представлениях, где одно действие может открыть конкретное табличное представление?Должен ли я создавать разные представления для всех уровней?Или я могу просто записать структуру данных моих представлений в файл plist (xml) и использовать этот файл для всех уровней.Пожалуйста, предложите мне, как начать.Спасибо

Ответы [ 2 ]

2 голосов
/ 25 сентября 2011

Используйте основанное на CoreData "Приложение на основе навигации" из XCode.

Создание объекта (например, TreeData), который имеет отношение один-ко-многим с самим собой, называемого «дети» Создайте для этого обратную связь (один-к-одному) под названием «родитель».

В tableView: didSelectRowAtIndexPath: в делегате, который вам нужно будет проверить, установлено ли «children» в вашем TreeData, если это так, то вам нужно push новый экземпляр TableViewController, в котором вы сейчас находитесь, с дочерними элементами выбранного элемента в качестве источника данных.

Это позволит вам продолжать движение.

Плист был бы самым простым способом дать общую идею и заставить что-то работать.

Вы также можете достичь того же с помощью списка.

Примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Tree Root</key>
    <array>
        <dict>
            <key>title</key>
            <string>Google (No Children)</string>
            <key>url</key>
            <string>www.google.com</string>
        </dict>
        <dict>
            <key>title</key>
            <string>List of Web Sites</string>
            <key>children</key>
            <array>
                <dict>
                    <key>title</key>
                    <string>digg</string>
                    <key>url</key>
                    <string>digg.com</string>
                </dict>
                <dict>
                    <key>title</key>
                    <string>iGoogle</string>
                    <key>url</key>
                    <string>www.google.com/ig</string>
                </dict>
                <dict>
                    <key>title</key>
                    <string>Stack Overflow</string>
                    <key>url</key>
                    <string>www.stackoverflow.com</string>
                </dict>
            </array>
        </dict>
    </array>
</dict>
</plist>

http://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/

2 голосов
/ 25 сентября 2011

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

Да, вам нужно будет создать представление для каждого уровня.Однако, с точки зрения взаимодействия с пользователем, 10 уровней кажутся слишком сложными (Можете ли вы вспомнить существующее приложение с 10 уровнями?).Вы должны подумать о том, чтобы сплющить свое дерево, объединив несколько уровней вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...