gpt4 book ai didi

iphone - 如何在没有导航 Controller 的情况下管理 UITableView 堆栈

转载 作者:行者123 更新时间:2023-12-03 21:09:52 25 4
gpt4 key购买 nike

我是 iPhone 开发新手,正在对现有 iPhone 应用程序进行修改。该问题的概要概述如下。

我有一个按钮,显示一个包含 UITableView 的弹出窗口。

我想单击一个菜单项并显示第二个带有子项的 UITableView,包括后退选项。如果用户点击返回,他们就会回到原来的 UITableView。如果子项下面有其他子项,则它应该(单击时)使用这些选项启动另一个 UITableView。还有一个后退按钮作为菜单项,允许用户导航到上一个显示的菜单。

这里的挑战是我没有使用导航 Controller 。最初的开发人员只想将 UITable View 添加到堆栈中,并在从一个菜单转到另一个菜单时在它们之间添加过渡。我见过并尝试过的大多数教程都利用导航 Controller 和 Interface Builder 来关联 UITableView。

现在,我有一个 XML 数据源填充菜单,当我单击菜单项时,标题会正确更改,但仍然使用相同的 UITableView 来显示选项 - 这当然会产生后果,因为某些子项目可能不适合屏幕。

关于如何做到这一点有什么想法吗?如果有必要,我可以发布一些代码,尽管我认为一般描述应该能够让你们这些聪明人敲响警钟!

最佳答案

这可以通过多种方式完成。

  1. 我还没有完成第一个,但您可能可以创建一个 UINavigationController 并将其 View 设置为适当的框架(气泡内)隐藏导航栏并设置后退按钮的操作以弹出当前 View Controller 。
  2. 另一种方法是在一个 Controller 上拥有多个 TableView ,委托(delegate)和数据源方法将 UITableView 作为参数,这样您就可以在设置行、标题等的高度以及返回 UITableViewCell 时区分它们。
  3. 我选择处理此类配置的方法是使用一个 UITableView 并且仅更改数据源。当您重新加载、插入、删除行或重新加载整个表时,您可以根据当前数据源级别更改所需的任何内容。最简单的非动画方法是重新加载整个表格。

    a)如果您的“选项”超出屏幕高度(您想要固定高度)表,请更改 - (CGFloat)tableview:(UITableView *)table heightForRowAtSection:(NSInteger)section 返回值

    b) 如果您的“选项”超出屏幕长度,请使单元格的默认 textLabel 灵活:cell.textLabel.adjustsFontSizeToFitWidth = YES; cell.textLabel.minimumFontSize = 14;或者为每个数据源级别设置自定义单元格(建议查找 UITableViewCell 的子类)。

    • 如果您对 TableViewCells 进行子类化,请记住为每个级别设置不同的出列单元格标识符,这样表格就不会为您提供其他级别的单元格类。

对于 TableView 或数据源的“堆栈”,您可以使用带有 addObject 的 NSMutableArray 进行推送,并使用 removeLastObject 进行弹出。对于动画,UITableViews 可以为 3 的行/部分设置动画(请参阅插入、删除、重新加载的文档 - 行/部分 UITableView 类引用),对于 2,您甚至可以拥有 UIView(如果不是 Grimless 建议的 CoreAnimation)动画,即将当前 tableview 向左移动 (setFrame:) 并将下一个 tableview 从右侧移动(setFrame 在动画之前离屏,然后在 beginAnimation-commitAnimation 子句中就位),但请确保将 tableview 添加到容器 View 中(气泡内部) ) 剪辑其 subview 。

关于iphone - 如何在没有导航 Controller 的情况下管理 UITableView 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com