2017-11-06 3 views
0

Ich habe eine UIViewController in Storyboard erstellt, die eine UITableView enthält.UITableView subViews enthält kein UITableViewWrapperView iOS 11

class ViewController: UIViewController, UITableViewDataSource 
{ 
    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
    } 

    override func viewDidAppear(_ animated: Bool) 
    { 
     super.viewDidAppear(animated) 
     print(self.tableView.subviews) //HERE..!!! 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return 5 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     return tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    } 
} 

Ausgabe: Ich bin vor Problem mit subViews von UITableView.

In IOS-10, wenn tableView.subviews ausführen, erhalte ich UITableViewWrapperView als eines der Elemente, zusammen mit anderen Elementen in der Anordnung.

Aber in iOS-11, UITableViewWrapperView ist im Array zurück von tableView.subviews nicht zur Verfügung.

Aus diesem Grund habe ich Probleme mit hitTest:withEvent:, die ich auf UITableView übersteuert habe.

Jede Art von Hilfe wird geschätzt.

+1

https://forums.developer.apple.com/thread/82320 Sehen Sie diese –

+0

@PGDev was ist das Problem mit 'hitTest: withEvent:'? – Jack

Antwort

1

In iOS-11, entfernt Apple-UITableViewWrapperView aus der table view Hierarchie wie in der Verbindung bestätigt: https://forums.developer.apple.com/thread/82320

ich Problem mit hitTest:withEvent: konfrontiert wurde, weil es früher auf tableView.subviews.first angewandt wurde das heißt UITableViewWrapperView.

Nun, ich angewendet hitTest auf dem UITableView sich statt dessen wrapper view, das heißt

class TableView: UITableView 
{ 
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? 
    { 
     if let hitView = super.hitTest(point, with: event) , hitView != self 
     { 
      return hitView 
     } 
     return nil 
    } 
} 

Schließlich habe es funktioniert.

Verwandte Themen