【问题标题】:How to create multi level views in NSTableView style?如何以 NSTableView 样式创建多级视图?
【发布时间】:2011-09-25 11:13:25
【问题描述】:

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

【问题讨论】:

    标签: iphone ios cocoa-touch xcode4


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议。
    【解决方案2】:

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

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

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

    这将允许您继续遍历。

    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/

    【讨论】:

    • 感谢 Twilson 的建议,我认为这些代码将来会帮助我:)
    • @regeint,如果我的答案是可以接受的,你能投票给我吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多