Iphone 阿巴尔徽章

Iphone 阿巴尔徽章,iphone,objective-c,cocoa-touch,uitabbar,badge,Iphone,Objective C,Cocoa Touch,Uitabbar,Badge,你知道为什么会这样吗 [[[[[self tabBarController] tabBar] items] objectAtIndex:2] setBadgeValue:@"Hello"]; 但这不是吗 [[self tabBarItem] setBadgeValue:@"Hello"]; 我宁愿不必提供显式的选项卡栏索引(在上面的代码中为2)。另外,如果第一个代码段是实现此功能的唯一方法,是否有方法从视图

你知道为什么会这样吗

[[[[[self tabBarController] tabBar] items] objectAtIndex:2] 
                                          setBadgeValue:@"Hello"];
但这不是吗

[[self tabBarItem] setBadgeValue:@"Hello"];
我宁愿不必提供显式的选项卡栏索引(在上面的代码中为2)。另外,如果第一个代码段是实现此功能的唯一方法,是否有方法从视图控制器中获取选项卡栏索引


谢谢。

您所指的tabBarItem是否在tabBarViewController中有一项?如果不是,那就是你的问题。您可以知道viewController的索引,因为您指定了在tabBarviewCOntroller中设置视图控制器的顺序,因此如果您首先在tabBarviewCOntroller中设置viewController a,则其按钮的索引将为0


随着您的评论,您的问题对我来说变得更清楚了,正如回复所述,也许一旦您设置了UITabBarController viewController,它就会抓取其tabBarItem,并且以后对该viewController属性的更改不会被tabBarViewController更新(我可能是错的,这是一个猜测)

您所指的tabBarItem是否在tabBarViewController中有一个项目?如果不是,那就是你的问题。您可以知道viewController的索引,因为您指定了在tabBarviewCOntroller中设置视图控制器的顺序,因此如果您首先在tabBarviewCOntroller中设置viewController a,则其按钮的索引将为0


随着您的评论,您的问题对我来说变得更清楚了,正如回复所述,也许一旦您设置UITabBarController viewController,它就会抓取其tabBarItem,并且以后对viewController属性的更改不会被tabBarViewController更新(我可能错了,这是一个猜测)

您能澄清一下吗?我的印象是,如果您将视图控制器添加到IB中的选项卡栏,那么视图控制器中的tabbaritem将自动设置。变量tabBarItem绝对不是nil,它有正确的标题,但它与通过tabBar items数组访问的地址不同。在Apple文档中发现:“选项卡栏项目通过其相应的视图控制器进行配置。若要将选项卡栏项与视图控制器关联,请创建UItabaritem类的新实例,为视图控制器适当配置它,并将其分配给视图控制器的tabBarItem属性。如果未为视图控制器提供自定义选项卡栏项,则视图控制器将创建一个默认项,其中不包含来自视图控制器标题属性的图像和文本。“我想我只是通过数组按索引访问它,而不是创建一个。啊,我知道你现在在做什么了,似乎你给出的例子应该有用…我想可能发生的是,一旦你将viewController分配给TabBarController,它会捕获该tabbaritem,然后更改viewController tabbaritem属性Don’t update按钮,因为tabBarViewController不检查更新。你能澄清一下吗一点?我的印象是,如果您将视图控制器添加到IB中的选项卡栏,那么视图控制器中的tabbaritem将自动设置。变量tabBarItem绝对不是nil,它有正确的标题,但它与通过tabBar items数组访问的地址不同。在Apple文档中发现:“选项卡栏项目通过其相应的视图控制器进行配置。若要将选项卡栏项与视图控制器关联,请创建UItabaritem类的新实例,为视图控制器适当配置它,并将其分配给视图控制器的tabBarItem属性。如果未为视图控制器提供自定义选项卡栏项,则视图控制器将创建一个默认项,其中不包含来自视图控制器标题属性的图像和文本。“我想我只是通过数组按索引访问它,而不是创建一个。啊,我知道你现在在做什么了,似乎您给出的示例应该有效…我认为可能发生的情况是,一旦您将viewController分配给TabBarController,它将捕获该tabbaritem,并在以后更改viewController tabbaritem属性时不更新按钮,因为tabBarViewController不检查更新。。