2017-03-16 14 views
2

Ich baue eine iOS-App mit Swift 3, die eine UITableView als Subview zeigt, wenn ich auf ein UITextField für die Auswahl von Elementen klicken. Wenn ich Elemente auswählen, ausführen ich diesen Code in table​View(_: did​Select​Row​At:​) FunktionSubView nur zum ersten Mal angezeigt

self.view.viewWithTag(104)?.removeFromSuperview() 

Danach, als ich die UITextField wieder klicken, wird der subview wieder auftauchen.

die subview Um zu zeigen, habe ich

wieder
self.textFieldGetCountry.addTarget(self, action: #selector(self.createActionSheet), for: UIControlEvents.editingDidBegin) 

Wie kann ich die subview diesen Code in viewDidLoad() Funktion geschrieben?

+0

hide es statt? – Larme

+0

Danke euch allen für die Beantwortung meiner Frage. Ich weiß, dass ich self.textFieldChoosCountry.resignFirstResponder() in meiner Tabelle nicht hinzugefügt habe Ansicht (_: did Zeile bei wählen) Funktion –

Antwort

1

versuchen, diesen Ansatz:

/* Create a lazy property */ 
lazy var customView: UIView = { 
    let view = // init your view 
    /* configuration (frame, color etc.)... */ 
    return view 
}() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    /* Add your subview to viewControllers view */ 
    self.view.addSubview(customView) 
} 


/* Make a function that regulates your view's hide/unhide propery or alpha */ 
func showCustomView(show: Bool) { 
    customView.alpha = show ? 1.0 : 0.0 
    /* alternative */ 
    // customView.isHidden = !show 
} 
0

Sie können ein Subview mit dem folgenden Code-Snippets im Coding

self.view.addSubview(UIView) 

Glückliche

createActionSheet() Funktion hinzuzufügen.

1

Einfach hide/show die tableView weil, wenn Sie es aus der Superview entfernen, dann müssen Sie es auch hinzufügen, wenn textField der erste Responder werden.

//Show the tableView in createActionSheet 
func createActionSheet() { 
    self.view.viewWithTag(104)?.isHidden = false 
} 

//Hide the tableView didSelectRow 
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.isHidden = true 
} 

Es ist Teig, wenn Sie die IBOutlet von tableView erstellen, so ist es einfach, darauf zuzugreifen.

+0

Wenn ich IsHidden verwendet blendet es nur Elemente der Tabellenansicht nicht die ganze Tabellenansicht. –

+0

@MituVinci Kannst du den Screenshot des Problems zeigen, über das du sprichst, denn wenn du tableView verdeckst, wird es alles verstecken, was es enthält wie sectionHeader, footer cell all dies wird versteckt sein. –

Verwandte Themen