0

我正在尝试根据 XML 文件在我的 iPad 应用程序中创建一个菜单栏。我决定使用动态 UITableView 来实现它。

XML 文件是这样的:

     <?xml version="1.0" encoding="UTF-8" ?>
     <menuBar>
          <menu id="1" text="File">
               <menuItem id="11" text="New Panel" />
               <menuItem id="12" text="Open" />
          </menu>
          <menu id="2" text="Edit">
               <menuItem id="21" text="Size" />
               <menuItem id="22" text="Font" />
               <menu id="3" text="Option">
                    <menuItem id="31" text="XX" />
               </menu>
          </menu>
     </menuBar>

所以菜单栏可能有好几级。一个菜单可能包含另一个菜单以及一些菜单项,例如,menu id="2"有一个menu id="3",并且menu id="3"有它自己的menuItem

我知道如何UITableViewCell动态创建。问题是当细胞是一种时我不知道如何创建下一个级别menu以及如何在更深层次上创建细胞UITableView

如果您知道如何实现这一点,请帮助我。或者,如果有更好的方法来生成菜单而不是使用UITableView,请告诉我。干杯:)

==========更新===========

我只收到一次 XML,所以我可以在解析 XML 时创建这些 tableview 吗?我以后不需要再次创建它们。

例如,当有一个menu元素时,我将 a 添加cell到当前级别tableview,并创建一个new tableview作为下一个级别,现在当有一个menuItem元素时,我将一个新单元格添加到 this new tableview。当当前菜单元素中没有更多元素时,返回上一级tableview。

4

1 回答 1

0

在您的表格视图委托(通常是 的子类UITableViewController)中,实现tableView:didSelectRowAtIndexPath:对用户点击单元格的反应。然后实现需要 1) 创建另一个的新实例,UITableViewController该实例将管理菜单层次结构的下一级;和 2) 将新控制器推送到 a 的导航堆栈上UINavigationController

这是一个非常粗略的草图:

- (void) tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
  [tableView deselectRowAtIndexPath:indexPath animated:NO];

  YourTableViewController* aController = [[YourTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
  [self.navigationController pushViewController:aController animated:YES];
  [aController release];
}

此代码示例假定您正在为其编写代码的控制器已经在导航控制器 ( self.navigationController) 的堆栈中。

无论如何,你应该好好看看 Apple 的类文档UINavigationController,以及他们的“View Controller Programming Guide for iOS”。

于 2012-12-21T00:26:11.033 回答