2016-03-25 10 views
1

Also das ist mein Code.Kann nicht abwickeln seegue

import UIKit 

class FirstViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate { 
//MARK: PROPERTIES 

    @IBOutlet weak var jotTextField: UITextField! 
    @IBOutlet weak var saveButton: UIBarButtonItem! 

    /* 
    This value is either passed by `MealTableViewController` in `prepareForSegue(_:sender:)` 
    or constructed as part of adding a new meal. 
    */ 
    var jot: String? 



//MARK: UITextFieldDelegate 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     // Hide the keyboard. 
     textField.resignFirstResponder() 
     return true 
    } 
    func textFieldDidEndEditing(textField: UITextField) { 
     jotTextField.text = textField.text 
    } 

//MARK: Navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if saveButton === sender { 
      var jot = jotTextField.text ?? "" 
      jot = String(jotTextField) 
     } 

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

     // Handle the text field’s user input through delegate callbacks. 
     jotTextField.delegate = self 


    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func unwindToJotList(sender: UIStoryboardSegue) { 
     if let sourceViewController = sender.sourceViewController as? FirstViewController, jot = sourceViewController.jot { 
      let newIndexPath = NSIndexPath(forRow: jot.count, inSection: 0) 
      jot.append(jot) 
       JotTableViewCell.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom) 


     } 
    } 

} 

Ich versuche, eine Abwickelstation segue jedoch zu erstellen, bekomme ich Fehler auf diesen Linien:

let newIndexPath = NSIndexPath(forRow: jot.count, inSection: 0) 
jot.append(jot) 
JotTableViewCell.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom) 

Fehler der Erste Zeile:

'count' is unavailable

Fehler der Zweite Zeile:

Cannot use mutating member on immutable value: 'jot' is a let constant

Es ist kein Let Consta nt. Ich habe es als Variable ('var') deklariert.

Dritte Zeile der Fehler:

Type 'jotTableViewCell' has no member 'insertRowsAtIndexPaths'

Bitte helfen Sie mir. Ich bin sehr neu in der Swift-Programmiersprache, man könnte sagen, ich bin ein Anfänger/Neuling. Dies scheint eine sehr einfache Lösung für einen erfahrenen Programmierer zu sein, nicht so sehr für mich. Vielen Dank für Ihre Zeit.

Antwort

0

Es ist mir nicht klar, was Sie zu tun versuchen, aber der Typ von jot ist ein String und Strings haben keine Eigenschaft "count". Sie könnten versuchen, jot.characters.count, wenn Sie die Anzahl der Zeichen haben möchten.

In der Zeile:

if let sourceViewController = sender.sourceViewController as? FirstViewController, jot = sourceViewController.jot 

Sie haben eine durch Kommata getrennte Erklärung es das gleiche wie zu sagen bedeutet

if let sourceViewController = sender.sourceViewController as? FirstViewController { 
    if let jot = sourceViewController.jot { 

    } 
} 

So werden Sie es als eine Konstante zu deklarieren. Weitere Informationen zum Deklarieren von Variablen in swift finden Sie unter here.

Sie sollten insertRowsAtIndexPaths für eine Instanz eines UITableView nicht als Klassenmethode einer Unterklasse von UITableViewCell aufrufen, wie Sie es anscheinend tun. Zum Beispiel:

self.tableView.insertRowsAtIndexPaths([indexPath]) 
+0

Vielleicht war ich nicht klar genug - das Abroll Segue ist so, dass, wenn eine Taste abgegriffen wird, es wieder auf den ursprünglichen Bildschirm geht, wo es dann hinzufügen, was gerade in eine Tabelle eingegeben worden Aussicht. – user3003189

Verwandte Themen