[英]How do I make a table view always load scrolled to the top?
I am making an app with 2 table views stacked in a navigation controller, and where the title is a large title.我正在制作一个应用程序,其中有 2 个表格视图堆叠在导航 controller 中,并且标题是大标题。 The first table view has many items in it so when you scroll down to get the lower cells, the large title shrinks at the top into a smaller title.
第一个表格视图中有许多项目,因此当您向下滚动以获取较低的单元格时,大标题在顶部缩小为较小的标题。 However when I then click on one of those lower cells, the new table view starts with the small navigation title at the top, as opposed to starting completely scrolled up with a large title.
但是,当我然后单击其中一个较低的单元格时,新的表格视图以顶部的小导航标题开始,而不是以大标题开始完全向上滚动。 In order to make the large title reappear in the configuration I want the page to start in, you have to scroll up.
为了使大标题重新出现在我希望页面开始的配置中,您必须向上滚动。 How can I make it so each table view starts with a large title, as opposed to matching the title configuration of the table before it?
如何使每个表格视图都以大标题开头,而不是匹配之前表格的标题配置?
UPDATE: Here is the code for the first tableview and how I configured the navigation controller.更新:这是第一个表视图的代码以及我如何配置导航 controller。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
loadCategories()
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Advert-Bold", size: setLargeTitleSize())!]
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Advert-Bold", size: setSmallTitleSize())!]
}
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.setStatusBar(backgroundColor: UIColor(hexString: vc1.defaults.string(forKey: "darkest")))
let textAttributes = [NSAttributedString.Key.foregroundColor: UIColor(hexString: vc1.defaults.string(forKey: "almostWhite"))]
navigationController?.navigationBar.titleTextAttributes = textAttributes
navigationController?.navigationBar.largeTitleTextAttributes = textAttributes
navigationController?.navigationBar.backgroundColor = UIColor(hexString: vc1.defaults.string(forKey: "darkest"))
self.navigationController?.navigationBar.barTintColor = UIColor(hexString: vc1.defaults.string(forKey: "darkest"))
}
//MARK: - TableView Datasource Methods
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return symptoms?.count ?? 1
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SymptomCell", for: indexPath)
cell.textLabel?.font = UIFont(name: "Advert-Light", size: setTextSize())
//cell.textLabel?.textColor = UIColor(hexString: vc1.defaults.string(forKey: "darkest"))
cell.backgroundColor = UIColor(hexString: vc1.defaults.string(forKey: "almostWhite"))
tableView.backgroundColor = UIColor(hexString: vc1.defaults.string(forKey: "almostWhite"))
if let category = symptoms?[indexPath.row] {
cell.textLabel?.text = category.name
}
return cell
}
//MARK: - TableView Delegate Methods
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "ToFlows", sender: self) //performs the segue to the list of items associated with that category.
tableView.deselectRow(at: indexPath, animated: true)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! FlowTableViewController
if let indexPath = tableView.indexPathForSelectedRow {
destinationVC.selectedSymptom = symptoms?[indexPath.row] //this sends the category currently selected over to the selectedCategory variable in the todo list view controller
}
}
//MARK: - Data Manipulation Methods
func loadCategories() {
symptoms = realm.objects(Symptoms.self) //this pulls out all the items with type category, and adds them all to the array of categories.
tableView.reloadData()
}
Try setting prefersLargeTiles
尝试设置
prefersLargeTiles
navigationController?.navigationBar.prefersLargeTitles = true
Then setting largeTitleDisplayMode
if it's still not doing what you need然后设置
largeTitleDisplayMode
如果它仍然没有做你需要的
navigationItem.largeTitleDisplayMode = .always
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.