Используйте основанное на 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/