动态改变质量UITableView背景,但如何?

动态改变质量UITableView背景,但如何?

问题描述:

我有很多的UITableViewControllers,我想有自定义背景色,而我不希望将它复制到所有TVC:动态改变质量UITableView背景,但如何?

self.tableView.backgroundColor = [UIColor clearColor]; 
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundPattern.png"]]; 

任何想法,请?

你可以用你自己的类子类化UITableViewController,改变这个类的backgroundcolor并从这个类派生UITableViewControllers。

+0

我试过了,但没有变化。我把代码放入init方法“//自定义初始化”,并在viewdidload中尝试,我也搜索了几次,但没有运气。 – Laszlo

+0

最后但并非最不重要的子类现在完美。 – Laszlo

看看UIAppearance协议。您可以指定表视图的背景色中所含特定视图控制器类全局或当:

UITableView *appearance = [UITableView appearanceWhenContainedIn:[MyTableViewController Class], [MyOtherTableViewController class], nil]; 
appearance.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundPattern.png"]]; 

你可以把这个在您的应用程序委托的application:didFinishLaunchingWithOptions:方法。

此外,viewtableView属性UITableViewController指向相同的东西,所以你不需要同时设置。

编辑

尝试看标题Customizing the Appearance of UIKit Controls 2012年的WWDC视频。他们演示UIAppearance协议以及您可能会觉得有用的主题设计模式。

+0

我有超过十个TableViewController和一些带Tableviews的UIViewControllers。而且还会有更多,我不认为这是解决这个问题的最好和最有活力的方式。 – Laszlo

+0

你所描述的问题正是外观协议的目标,所以我不明白你的反对意见。例如,如果所有的表格都具有相同的背景颜色,则需要一行代码。它不是静态的,所以我没有得到“动态”的评论。看看'UIAppearance'协议文档,也许它会变得更加清晰。 –

+0

在我的答案中添加了WWDC视频链接。看一看。 –