如何在NSTableView样式中创建多级视图?

时间:2011-09-25 11:13:25

标签: iphone ios cocoa-touch xcode4

我有一个有多个级别的项目。 我没有找到合适的方式开始。项目模拟是在 层次结构(树状结构)。 它有近10个级别。那么如何在多个中实现这些级别 表视图一个动作可以打开特定的表视图? 我是否应该为所有级别创建不同的视图?或者我可以 只需在plist文件(xml)中编写我的视图的数据结构并使用 所有级别的文件。 请建议我如何开始。 谢谢

2 个答案:

答案 0 :(得分:2)

如果每个级别都需要用户互动&有大量的信息要显示给用户,那么你应该使用嵌套的UITableViews,在那里点击一行导致下一行。您可以查看设置应用程序以获取示例。

是的,您必须为每个级别创建一个视图。但是,从用户体验的角度来看,10个级别似乎有点过分(您能想到现有的应用程序有10个级别吗?)。您应该考虑通过将几个级别组合在一起来展平您的树。

答案 1 :(得分:2)

使用XCode基于CoreData的“基于导航的应用程序”。

创建一个与自身具有一对多关系的实体(例如TreeData),称为“children”。在其上创建一个反向关系(一对一),称为“父”。

在委托中的 tableView:didSelectRowAtIndexPath:,您需要检查“TreeData”中是否设置了“children”,如果是这样,那么您需要推送您当前所在的TableViewController的新实例,并将所选项目上的子项作为dataSource。

这样可以让你继续穿越。

一个plist是提供一般想法并使某些工作变得最简单的方法。

你也可以用plist实现同样的目标。

这样的事情:

<?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/