如何使用 UITabbarsystemitem 设置标题

Posted

技术标签:

【中文标题】如何使用 UITabbarsystemitem 设置标题【英文标题】:How to set title with UITabbarsystemitem 【发布时间】:2013-04-25 08:58:27 【问题描述】:

我只是想知道如何使用UITabBarSystemItem 设置标签栏项目的标题?

我做了什么:

self.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFeatured tag:0];

所以要默认更改标题而不是“精选”(因为UITabBarSystemItemFeatured 对象),我写道:

self.tabBarItem.title = @"Actu";

所以在我看来,我应该将“Actu”作为标题而不是“Featured”。

但它什么也没改变,标题一直是“精选”(默认标题)。

我也试过了:

[[self.tabBarController.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"Actu", @"Actu")];

(因为这个 tabbaritem 在索引 0 处),但没有任何变化。

或者使用UITabBarSystemItem对象可能无法进行这样的修改?

我希望这已经足够解释了:/

PS : 对不起我的英语和其他任何错误,第一次发帖……:/

【问题讨论】:

【参考方案1】:

UITabBarItem 使用 initWithTabBarSystemItem:tag: 初始化时,您以后无法更改图像或标题属性。

来源:ios Development Documentation

【讨论】:

好的,所以如果我想设置标题,我必须导入自己的图片。感谢您的快速答复!【参考方案2】:

您可以使用 KVC。

[self.tabBarItem.setValue("YourTitle", forKey: "internalTitle")];

【讨论】:

【参考方案3】:

你已经写过了:

...使用UITabBarSystemItem 对象无法进行这样的修改...

那些将titleimage 属性设置为nil,因此它们将这些值存储在一些内部私有属性中。

文档也说:

-initWithTabBarSystemItem:tag: 返回项目的标题和图像属性以后无法更改。

【讨论】:

【参考方案4】:

其实是可以的,你可以利用_setInternalTitle: from private API.的方法

[self.tabBarItem setValue:@"Categories" forKey:@"internalTitle"];

注意事项:仅用于测试版本。

【讨论】:

太棒了,这行得通。这对于在快速原型制作时使用系统图标非常方便。这是 Swift 中的代码(适用于 Xcode 10 iOS 12):navigationController.tabBarItem.setValue("Hello", forKey: "internalTitle")【参考方案5】:

我意识到这是旧的,但也许这会帮助其他想要这样做的人。如上所示,从系统项创建一个 tabBarItem。然后创建另一个 tabBarItem,就好像您有一个自定义图标并从系统项中复制图像一样。

        UITabBarItem* systemItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFeatured tag:0];
        UITabBarItem* theItem = [[UITabBarItem alloc] initWithTitle:theNameIWantToUse image:systemItem.image tag:0];

【讨论】:

是的,我的答案不正确,我后来才发现。 systemItem.title 也是 nil。

以上是关于如何使用 UITabbarsystemitem 设置标题的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 定位按钮

如何在 Debian 上使用 useradd 将主目录设为根目录

如何设断点????-----使用WinDbg调试SQL Server查询

如何设计测试用例

Core Data codegen 如何决定是不是将属性设为可选?

如何将 UserControl 中的控件设为私有?