Gần đây, tôi đã di chuyển một số mã sang SDK iOS 11 beta 5 mới.
Bây giờ tôi nhận được một hành vi rất khó hiểu từ UITableView. Bảng xem bản thân nó không phải là ưa thích. Tôi có các ô tùy chỉnh nhưng phần lớn nó chỉ dành cho chiều cao của chúng.
Khi tôi đẩy bộ điều khiển chế độ xem của mình với chế độ xem bảng, tôi nhận được một hoạt ảnh bổ sung trong đó các ô "cuộn lên" (hoặc có thể toàn bộ khung chế độ xem bảng được thay đổi) và xuống dọc theo hoạt ảnh điều hướng đẩy / bật lên. Vui lòng xem gif:
Tôi tạo thủ công tableview
trong loadView
phương thức và thiết lập các ràng buộc bố cục tự động để bằng với chế độ xem đầu, cuối, trên, dưới của chế độ xem bảng. Superview là chế độ xem gốc của bộ điều khiển chế độ xem.
Mã đẩy của bộ điều khiển xem rất chuẩn: self.navigationController?.pushViewController(notifVC, animated: true)
Mã tương tự cung cấp hành vi bình thường trên iOS 10.
Bạn có thể vui lòng chỉ cho tôi hướng dẫn về những gì là sai?
CHỈNH SỬA: Tôi đã tạo một bộ điều khiển tableview rất đơn giản và tôi có thể tạo lại hành vi tương tự ở đó. Mã:
class VerySimpleTableViewController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = String(indexPath.row)
cell.accessoryType = .disclosureIndicator
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let vc = VerySimpleTableViewController.init(style: .grouped)
self.navigationController?.pushViewController(vc, animated: true)
}
}
CHỈNH SỬA 2: Tôi đã có thể thu hẹp vấn đề xuống tùy chỉnh của mình về UINavigationBar. Tôi có một tùy chỉnh như thế này:
rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)
nơi createFilledImage
tạo ra hình ảnh vuông với kích thước và màu sắc đã cho.
Nếu tôi bình luận ra dòng này, tôi sẽ trở lại hành vi bình thường.
Tôi sẽ đánh giá cao bất kỳ suy nghĩ nào về vấn đề này.
navigationBar.isTranslucent
thành false
, nếu không nó hoạt động tốt.