2017-04-07 2 views
0

In einer TableViewController, habe ich eine transluzente Overlay-Ansicht mit einer Nachricht. Das Overlay wird korrekt über die TableViewController angezeigt, aber ich kann immer noch die Tabellenansicht hinter dieser Overlay-Ansicht scrollen. Wie kann ich das Scrollen verhindern, wenn das Overlay oben ist?Wie verhindere ich, dass die Tabellenansicht hinter einer Ansicht blättert?

konstruierte ich meine benutzerdefinierten Overlay-Ansicht in meinem TableViewController:

override func viewDidLoad() { 
    super.viewDidLoad() 

    loadData(
     id, 
     success: {(doc) ->() in 
      let frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height) 

      let overlayView = EmptyCollectionView(frame : frame) 
      overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8) 
      self.view.addSubview(overlayView) 

      self.tableView.reloadData() 
     }, 
     error: {..}) 
} 

ich self.tableView.isUserInteractionEnabled = false versuchte darunter Dieses

+0

hmmm etwas scheint falsch ... wo fügst du 'view' zur Ansichtshierarchie hinzu? – DonMag

+0

@DonMag Ich habe den Code aktualisiert, um zu reflektieren, wenn ich die overlayView –

+0

hinzugefügt habe Wir müssen wissen, die Beziehung zwischen self.view & self.tableview –

Antwort

3

OK - wenn Sie in einer UITableViewController sind, bezieht sich self.view auf die UITableView selbst. Sie möchten Ihre Overlay als Subview der Tabellenansicht des Super ...

Versuchen Sie, diese hinzuzufügen:

tableView.superview?.addSubview(overlayView) 

Sie können auch ein paar Dinge zu vereinfachen, und Sie sollten Steuerung implementieren Größenänderungen zu handhaben wie beispiels als Gerätedrehung:

let overlayView = EmptyCollectionView(frame: tableView.frame) 

overlayView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8) 

tableView.superview?.addSubview(overlayView) 
0
overlayView.userInteractionEnabled = true 

soll verhindern, berührt von der durch sie in die Tabellenansicht.

Verwandte Themen