嵌入式 tableview 的故事板背景颜色属性不起作用?
Posted
技术标签:
【中文标题】嵌入式 tableview 的故事板背景颜色属性不起作用?【英文标题】:Embedded tableview's storyboard background color property not working? 【发布时间】:2021-07-27 12:40:04 【问题描述】:我展示了一个像这样的 tableview 控制器(嵌入在导航控制器中):
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tvc = storyboard.instantiateViewController(withIdentifier: "tvcID") as! MyTableViewController
tvc.title = "My tableview title" // WORKS
let nc = UINavigationController(rootViewController: tvc)
nc.navigationBar.backgroundColor = UIColor.blue // NOT POSSIBLE USING STORYBOARD
self.present(nc, animated: true, completion: nil)
我想在storyboard上设置导航栏背景颜色,并通过代码更改tvc.title
。
在上面的片段中,导航栏背景颜色需要通过代码设置(倒数第二行),因为故事板导航栏背景颜色设置不会改变它所说的内容。导航栏背景颜色保持白色(默认)。 tvc.title
正确更改。
但是,当我如下更改我的代码时,导航栏背景颜色会根据情节提要选择根据需要更改,但现在 tvc.title
无法通过代码设置。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tvc = storyboard.instantiateViewController(withIdentifier: "tvcID") as! MyTableViewController
tvc.title = "My tableview title" // NOW THIS DOESN'T WORK ANYMORE
let nc = storyboard.instantiateViewController(withIdentifier: "ncID") as! UINavigationController
// nc.navigationBar.backgroundColor = UIColor.blue // NOT REQUIRED ANYMORE
self.present(nc, animated: true, completion: nil)
我的印象是我在这里缺少一些基本的东西。
我想通过代码更改这两个属性。
【问题讨论】:
【参考方案1】:如果您的故事板具有这样的结构:
UINavigationController --> MyTableViewController
你可以像这样实例化MyTableViewController
:
guard let navController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() as? UINavigationController else return
guard let tvc = navController.viewControllers.first as? MyTableViewController else return
tvc.title = "Test title"
navController.navigationBar.barTintColor = UIColor.green
【讨论】:
就是这样!navController.viewControllers.first
是缺失的部分。非常感谢!以上是关于嵌入式 tableview 的故事板背景颜色属性不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
iOS UISearchDisplayController 防止 tableview 改变背景颜色(背景保持灰色)