【问题标题】:Accessing -willDisplayCell method of moreNavigationController's UITableView访问moreNavigationController的UITableView的-willDisplayCell方法
【发布时间】: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: 方法中设置该背景颜色。谁能告诉我如何访问该方法?任何帮助将不胜感激。

【问题讨论】:

    标签: iphone ios cocoa-touch ios5 uikit


    【解决方案1】:

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

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

    【讨论】:

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