2016-04-19 14 views
-6

Wie kann ich eine Zelle eines UITableView antippen und dann erscheint ein Alarm, wo ich zwischen "Ok" oder "Abbrechen" wählen kann.Alert und tableViewCell

Wenn "Ok" angetippt wird, zeigt die App einen Setup-Controller (den ich bereits habe).

Wenn "Abbrechen" angetippt wird, verschwindet die Warnung und nichts passiert.

+1

Werfen Sie einen Blick auf diese Antwort und sehen Sie, ob es Ihnen hilft: http: // stackove rflow.com/q/30483104/3487310 – fsb

Antwort

0

Sie müssen die Methode tableView:didSelectRowAtIndexPath: wie unter

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     tableView.deselectRowAtIndexPath(indexPath, animated: true) 
     let ac = UIAlertController(title: "Title", message: "Your message here", preferredStyle: .Alert) 
     let okAction = UIAlertAction(title: "Ok", style: .Default) { (_) in 
      presentViewController(yourSetupController, animated: true, completion: nil) 

     } 
     ac.addAction(okAction) 
     let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil) 
     ac.addAction(cancelAction) 
     presentViewController(ac, animated: true, completion: nil) 
    } 
+0

Auch mit Ihrem Code in Zeile 'presentViewController (yourSetupController, animiert: true, Abschluss: nil)' Ich bekomme den Fehler "Kann nicht konvertieren Wert vom Typ 'NameOfMySetupController'.type zu erwarteten Argument Typ UIViewController - –

1

Übersicht außer Kraft zu setzen:

1. Einstellen der Tabellenansicht Delegierten

Wenn Sie UITableViewController verwenden, wird UITableViewDelegate bereits eingestellt als die Tabellenansicht Controller-Klasse, sonst setzen Sie es selbst (tableView.delegate = self).

2. Funktion, die aufgerufen werden würde, wenn eine Zelle abgegriffen

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

3. Zeigen Sie die Warnungsansicht mit einer Darstellung Controller

Code:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    let alertController = UIAlertController(title: "Something", message: "bla bla", preferredStyle: .Alert) 

    let okAction = UIAlertAction(title: "Ok", style: .Default) { action in 

     //Do something when cancel is tapped 

     let setupController = UIViewController() //Replace with your own set up view controller 

     self.presentViewController(setupController, animated: true) { 
      //Do something when alert view is presented 
     } 
    } 

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { action in 

     //Do something when cancel is tapped 
    } 

    alertController.addAction(okAction) 
    alertController.addAction(cancelAction) 

    //Show alert view 
    presentViewController(alertController, animated: true) { 
     //Do something when alert view is presented 
    } 
} 
+0

Bei Zeile 'self.presentViewController (setupController, animiert: true) {' Ich erhalte den Fehler "Kann den Wert vom Typ 'nameOfMySetupController'.type nicht in den erwarteten Argumenttyp UIViewController –

+0

konvertieren Sie müssen zuerst eine Instanz Ihres Setup-Controllers erstellen. Angenommen, der Name Ihres View-Controllers lautet nameOfMySetupController, gehen Sie folgendermaßen vor: 'let setupController = nameOfMySetupController()'. Meiner bescheidenen Meinung nach würde es hilfreich sein, wenn Sie einige der Grundlagen der Swift/iOS-Programmierung lernen, bevor Sie in die Programmierung eintauchen. – user1046037

+0

Jetzt gibt es mir keine Fehler. Die Warnung wird jedoch nicht angezeigt. Wie wähle ich die Zeile aus, auf die ich tippen muss, damit die Warnung angezeigt wird? –