【发布时间】:2020-05-03 16:37:34
【问题描述】:
我想根据条件更改视图控制器背景颜色、子视图背景颜色和文本颜色。
例如:
mainViewcontroller 上有 2 个选项(A 和 B ViewController)。
如果用户选择 A ViewController,那么它将跟随其颜色从 A 到 X、Y、Z 视图控制器,直到我推送、执行 Segue 或呈现 X、Y、Z 视图控制器。
如果用户选择 B 视图控制器,那么它将跟随其颜色从 B 到 X、Y、Z 视图控制器,直到我推送、执行Segue 或呈现 X、Y、Z 视图控制器。
注意:这些子视图可能包括 tableview、collectionview、CollectionView 中的 tableView 或 tableView 中的 CollectionView 提前致谢。
我正在使用这种方法
if gold {
if let vc = storyboard?.instantiateViewController(withIdentifier: "ListView") as? ListView {
vc.gold = true
vc.mainBackgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
vc.labelColor = #colorLiteral(red: 0.968627451, green: 0.6196078431, blue: 0.1529411765, alpha: 1)
vc.topBarColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
present(vc, animated: true, completion: nil)
}
}
【问题讨论】:
-
“mainViewController 上有 2 个选项(A & B ViewController)”。你的意思是 mainViewController 上的 A 和 B 视图吗?一般如果要推送属性到后续VC,可以使用prepareForSegue()
-
@LorenRogers 这不合适,因为如果我从 A 到 U、V、W、X、Y、Z 视图控制器,我必须为每个对象分配 n 个颜色。例如Z viewController有2个collection view,1个collectionView有2个tableView,
-
-
你的 Z viewController 有一个属性,我们称之为 UIColor 的“viewColor”。然后在推送segue的ViewController中,实现prepareForSegue(),获取destinationViewController为? Z 视图控制器。然后 zViewController.viewColor = 一些颜色。然后在 Z viewController 中,您的视图设置您想要的任何颜色(我假设的背景颜色) collectionView.backgroundColor = self.viewColor
-
在这种情况下,采用UITableViewDelegate selectCell,并根据单元格,传递一些预定义在IB segueIdentifier中。再次在 mainVC prepareForSegue 中为那个 segueIdentifier 传递一些颜色
标签: ios swift viewcontroller reusability