访问moreNavigationController的UITableView的-willDisplayCell方法

Posted

技术标签:

【中文标题】访问moreNavigationController的UITableView的-willDisplayCell方法【英文标题】:Accessing -willDisplayCell method of moreNavigationController's UITableView 【发布时间】:2012-08-13 12:32:02 【问题描述】:

在moreNavigationController中设置UITableView的backgroundView后像这样...

UITableView *moreTableView = (UITableView *)tabBarController.moreNavigationController.topViewController.view;
[moreTableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]]];

...UITableView 的单元格将其backgroundColor 从白色更改为透明(透明)。我尝试使用以下代码行将其设置回白色...

for (UITableViewCell *cell in [moreTableView visibleCells]) 
    [cell setBackgroundColor:[UIColor whiteColor]];

...但不幸的是,这不起作用,所以我想唯一的解决方案是在 -willDisplayCell: 方法中设置该背景颜色。谁能告诉我如何访问该方法?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

如果你有自定义单元格,那么单元格的背景颜色可以在UITabeViewCell的子类中设置,否则你应该尝试将此逻辑添加到UITableView的数据源的tableView:cellForRowAtIndexPath:方法中。

您在循环中所做的只会影响可见单元格,因为它们将被重复使用,并且如果背景被设置为动态清除,那么您的背景将始终被覆盖。

【讨论】:

不是自定义单元格,是UITabBarController自动生成的表格视图。我在 -didFinishLaunchingWithOptions 方法中访问它。 您在使用情节提要吗?我认为您应该尝试在数据源中的 tableView:cellForRowAtIndexPath: 方法中设置背景颜色(可能是 tableview 控制器本身)。 是的,我正在使用情节提要,但据我所知,在 Interface Builder 中无法访问 UIMoreListController 的 tableView。 所以你需要做的是创建你自己的 UITableViewController 子类,并在故事板中,将 tableview 的类更改为你自己的类。然后你知道故事板将加载你的类,现在你有了控制器的代码,所有数据源的东西都可以在其中发生。

以上是关于访问moreNavigationController的UITableView的-willDisplayCell方法的主要内容,如果未能解决你的问题,请参考以下文章

如何设置MSSQL数据库访问用户及访问权限

在SQL数据访问中如何对不同级别设置访问权限

有效访问时间和平均访问时间

一个网站用域名可以访问,用ip不能访问,是为啥?

C盘 位置不可用,无法访问C:\ 拒绝访问

文件拒绝访问无法访问怎么办