2017-03-08 4 views
1

in meinem Hauptansicht-Controller Ich habe eine Schaltfläche, die ein Dialogfeld mit zwei Schaltflächen und einem TableView Popups. Die TabelleView wird mit einer benutzerdefinierten UIView angezeigt, und die UITableViewCell ist ebenfalls benutzerdefiniert. Das UITableViewCell besteht aus einem benutzerdefinierten Kontrollkästchen und einem UILabel.Ich versuche, eine tap-Geste zum tableView hinzuzufügen, so dass, wenn ich auf eine Zeile klicke, das Kontrollkästchen markiert. Diese Funktion irgendwie von Werken, aber wenn ich für mehr als 3 Sekunden gedrückt setzt die UITableViewCell auf diesenSwift UiTableViewCell Setzt nach langem Drücken

UITableViewCell Error ScreenShot

Ich weiß nicht, was diesen Fehler verursacht. Jede Hilfe wäre willkommen.

Hier ist mein Code in meinem Viewcontroller, der das Popup-Dialog öffnet sich:

func locationButtonPressed(sender: UIBarButtonItem) { 
    // Create a custom view controller 
    let vc = RadiusViewController(nibName: "RadiusViewController", bundle: nil) 
    // Create the dialog 
    let popup = PopupDialog(viewController: vc, buttonAlignment: .horizontal, transitionStyle: .bounceDown, gestureDismissal: true) 

    // create first button 
    let cancelButton = CancelButton(title: "Cancel", height: 60, dismissOnTap: true) { 
     print("Popup Canceled") 
    } 

    // create second button 
    let okButton = DefaultButton(title: "Ok", height: 60, dismissOnTap: true) { 
     print("Ok button pressed") 
    } 

    // add buttons to dialog 
    popup.addButtons([cancelButton, okButton]) 

    // present dialog 
    self.present(popup, animated: true, completion: nil) 

    print("location button pressed") 
} 

Tap-Geste Funktion in meiner Gewohnheit UIView mit dem Tableview:

override func viewDidLoad() { 
    super.viewDidLoad() 

    ...code 

    let tap = UITapGestureRecognizer(target: self, action: #selector(tableTapped)) 
    self.tableView.addGestureRecognizer(tap) 
} 

func tableTapped(tap:UITapGestureRecognizer) { 
    let location = tap.location(in: self.tableView) 
    let path = self.tableView.indexPathForRow(at: location) 
    if let indexPathForRow = path { 
     self.tableView(self.tableView, didSelectRowAt: indexPathForRow) 
     print("Tapped on the table") 
    } else { 
     // handle tap on empty space below existing rows however you want 
    } 
} 

Antwort

0

Ich glaube, Sie tippen Geste hinzufügen müssen auf Ihrer Tabellenansichtszelle, nicht auf der Tabellenansicht.

+0

Wie würde ich das machen? – satish99

0

Sie müssen nur Ihren ViewController implementieren das UITableViewDelegate. Es gibt eine Callback-Methode für didSelectRowAtIndexPath und darin können Sie Logik festlegen, um auf die Eigenschaften Ihrer Zelle zuzugreifen, z. B. das benutzerdefinierte Kontrollkästchen. Ein Tappgestenerkenner wird nicht benötigt, da dies eine nativ bereitgestellte Funktion ist.

UITableViewDelegate Documentation

Verwandte Themen