自定义 UITabBarController 选项卡的“更多”列表

Posted

技术标签:

【中文标题】自定义 UITabBarController 选项卡的“更多”列表【英文标题】:Customizing the "More" list of UITabBarController tabs 【发布时间】:2009-07-12 22:15:09 【问题描述】:

我正在编写一个基于 UITabBarController 的应用程序,它有 10 多个 viewControllers 和相应的 UINavigationControllers。每个 viewContoller 都有一个(短)Title 和一个(长)navigationTitle。短标题显示在 TabBar 图标下方,长标题显示在导航栏顶部。

UITabBarController 显示前 4 个选项卡并自动添加一个“更多”选项卡,该选项卡会显示其余选项卡的列表。此列表显示每个视图控制器的(短)标题。我如何告诉它显示(长)navigationTitle?

【问题讨论】:

【参考方案1】:

我最近为一个应用程序做了这个,发现最好的方法是创建一个自定义数据源,将 more 表中的标题重命名为长名称。以其他方式执行此操作根本不切实际,因为名称必须更改太多次(一次在标签栏加载时,一次在更多视图加载时,再次在自定义部分加载时,再次在自定义部分关闭时)。

我找到了基本说明here 并简单地更改了标题。我使用 plist 来保存每个部分的所有短名称和长名称。

我的 cellForRowAtIndexPath 代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [originalDataSource tableView:tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.text = [[sections objectAtIndex:indexPath.row+4] objectForKey:@"LongName"];
    return cell;

【讨论】:

【参考方案2】:

您应该尝试将所有选项卡默认为(长)标题,然后以编程方式将可见选项卡更改为其(短)名称。如果您不知道如何以编程方式更改它们,请告诉我。这实际上可能是一种首先做你想做的事情的方法。我会详细说明提示。

【讨论】:

请告诉我如何以编程方式将可见选项卡更改为其(短)名称。同时,我通过继承 UITabBarController 实现了这一点,这也让我可以更改 MoreViewController 的颜色。 我也想知道你对此的看法,我也有类似的问题。我真的不想继承 UITabBarController 所以以编程方式更改会有所帮助。问题是,如果你这样做,“配置”屏幕也会显示长名称,我找不到在这些图标出现之前更改名称的点。 我认为通过为更多导航控制器实现新数据源并重命名每个单元格的标题来实现这一点要容易得多。这意味着视图控制器不会每次都被重命名,而只是显示的名称。否则,您必须至少更改标题两次(在配置屏幕之前和之后),不包括在加载栏项目时更改。

以上是关于自定义 UITabBarController 选项卡的“更多”列表的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UITabBarController 选项卡的“更多”列表

如何在具有自定义选项卡 UI(不使用选项卡栏)的 UITabBarController 中删除“更多”选项卡

具有滚动功能的自定义 UITabBarController

单击 UITabBarController 时的自定义操作

UITabBarController 和 UINavigationController 交互

如何识别从UITabBarController中的更多选项卡或单独选项卡单击视图控制器?