मैंने हाल ही में कुछ कोड को नए iOS 11 बीटा 5 एसडीके में माइग्रेट किया है।
अब मुझे UITableView से एक बहुत ही भ्रमित व्यवहार मिलता है। टेबलव्यू ही नहीं है कि फैंसी। मेरे पास कस्टम सेल हैं लेकिन अधिकांश भाग में यह सिर्फ उनकी ऊंचाई के लिए है।
जब मैं टेबल व्यू के साथ अपने व्यू कंट्रोलर को धक्का देता हूं तो मुझे एक अतिरिक्त एनीमेशन मिलता है जहां सेल "स्क्रॉल अप" (या संभवत: पूरे टेबलव्यू फ्रेम को बदल दिया जाता है) और नीचे पुश / पॉप नेविगेशन एनीमेशन के साथ होता है। कृपया जिफ़ देखें:
मैं मैन्युअल रूप tableview
से loadView
विधि और सेटअप ऑटो लेआउट बाधाओं में अग्रणी, अनुगामी, शीर्ष, टेबलव्यू के पर्यवेक्षण के नीचे के बराबर होने के लिए बनाता हूं । सुपरवाइवे रूट कंट्रोलर ऑफ व्यू कंट्रोलर है।
कंट्रोलर पुश कोड बहुत मानक है: self.navigationController?.pushViewController(notifVC, animated: true)
समान कोड iOS 10 पर सामान्य व्यवहार प्रदान करता है।
क्या आप मुझे दिशा दे सकते हैं कि क्या गलत है?
EDIT: मैंने एक बहुत ही सरल टेबलव्यू कंट्रोलर बनाया है और मैं वहीं व्यवहार कर सकता हूं। कोड:
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)
}
}
संपादित 2: मैं UINavigationBar के अपने अनुकूलन के लिए समस्या को कम करने में सक्षम था। मेरा इस तरह से एक अनुकूलन है:
rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)
जहां createFilledImage
दिए गए आकार और रंग के साथ चौकोर छवि बनाता है।
अगर मैं इस लाइन पर टिप्पणी करता हूं तो मुझे सामान्य व्यवहार वापस मिल जाता है।
मैं इस मामले पर किसी भी विचार की सराहना करता हूं।
navigationBar.isTranslucent
करने के लिए false
, अन्यथा यह ठीक काम करता है।