更改“更多”视图控制器的背景颜色

时间:2010-06-07 12:07:06

标签: objective-c iphone uitabbarcontroller

是否可以使用图像或以其他方式更改UITabBarController的“更多”导航控制器中单元格的背景颜色?

2 个答案:

答案 0 :(得分:6)

这些链接都不是这个问题的答案。似乎Malakim指的是UITabBarController的MoreViewController,并且不想更改tabbar颜色,而是更改构成MoreViewController的tableView的单元格。

答案很简单。您可以引用tabBarController的moreViewController属性,该属性将为您提供对UIMoreNavigationController实例的引用。

UINavigationController* moreNavController = myTabController.moreViewController;

使用此导航控制器,您可以获得根视图控制器的视图,因为这是保存tableView的内容。实际上,根视图控制器是UITableViewController,访问它的视图直接抓取tableView!

UITableView* moreView = ((UIViewController*)[moreNavController.viewControllers objectAtIndex:0]).view; //可能需要在此投放以禁止警告

并且你们去了,moreView引用了你感兴趣的hee tableView。然后你可以使用moreView.subviews进行深入研究,或者像moreView.backgroundColor = [UIColor uglyColor];那样进行丑陋的背景颜色改变

答案 1 :(得分:1)

Steve给出的方法工作正常,但当我尝试将moreNavController的视图设置为表视图时,它给了我警告。

warning: incompatible Objective-C types initializing 'struct UIView *', expected 'struct UITableView *'

所以为了删除警告,我尝试了下面的代码并且它有效,不确定它是正确的方式

    UINavigationController* moreNavController = self.tabBarController.moreNavigationController;
    UIViewController* moreViewController = [moreNavController.viewControllers objectAtIndex:0]; 
    moreViewController.view.backgroundColor = [UIColor redColor];