2016-05-15 3 views
0

finden Sie Code unten, ich brauche eine Bearbeitungsschaltfläche am oberen Rand meiner Tableviewcontroller Ansicht, die Zeilen neu anordnen oder löschen kann. Jede Hilfe wird geschätzt. Ich habe eine integrierte Funktion gefunden, um einzelne Zeilen zu löschen, aber ich benötige speziell eine Bearbeitungsschaltfläche.Tableview-Controller, wie Edit-Taste hinzufügen, um die Zeilen neu anzuordnen IOS Swift 2

import UIKit 

    class TableViewController: UITableViewController { 
     var sports:[Sport] = [] 
     override func viewDidLoad() { 
      loadData() 
      super.viewDidLoad() 

      // Uncomment the following line to preserve selection between presentations 
      // self.clearsSelectionOnViewWillAppear = false 

      // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
      // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
     } 
     func loadData(){ 




      if let path = NSBundle.mainBundle().pathForResource("data", ofType: "plist"){ 
       if let tempDict = NSDictionary(contentsOfFile: path){ 
        let tempArray = (tempDict.valueForKey("sports") as! NSArray) as Array 
        for dict in tempArray { 

         let sportName = dict["sportName"]! as! String 

         let numberOfPlayers = dict["numberOfPlayers"]! as! String 

         let countryOfOrigin = dict["countryOfOrigin"]! as! String 


         let p = Sport(sportName: sportName, numberOfPlayers:numberOfPlayers, countryOfOrigin:countryOfOrigin) 
         sports.append(p) 
        } 
       } 

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

     // MARK: - Table view data source 

     override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
      // #warning Incomplete implementation, return the number of sections 
      return 1 
     } 

     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      // #warning Incomplete implementation, return the number of rows 
      return sports.count 
     } 


     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
      let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) 
      var sport = sports[indexPath.row] 

      cell.textLabel?.text = sport.getSportName() 
      cell.detailTextLabel?.text = sport.getCountryOfOrigin() 

      // Configure the cell... 

      return cell 
     } 


     /* 
     // Override to support conditional editing of the table view. 
     override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
      // Return false if you do not want the specified item to be editable. 
      return true 
     } 
     */ 

     /* 
     // Override to support editing the table view. 
     override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
      if editingStyle == .Delete { 
       // Delete the row from the data source 
       tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
      } else if editingStyle == .Insert { 
       // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
      }  
     } 
     */ 

     /* 
     // Override to support rearranging the table view. 
     override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { 

     } 
     */ 

     /* 
     // Override to support conditional rearranging of the table view. 
     override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
      // Return false if you do not want the item to be re-orderable. 
      return true 
     } 
     */ 

     /* 
     // MARK: - Navigation 

     // In a storyboard-based application, you will often want to do a little preparation before navigation 
     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
      // Get the new view controller using segue.destinationViewController. 
      // Pass the selected object to the new view controller. 
     } 
     */ 
     override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
      let sport = sports[indexPath.row] 
      let detailVC = SportsDetailVC(style: .Grouped) 
    //  detailVC.title = park.title 
      detailVC.sport = sport 
    //  detailVC.zoomDelegate = mapVC 
      navigationController?.pushViewController(detailVC, animated: true) 

     } 

    } 


import UIKit 

class SportsDetailVC: UITableViewController { 
    var sport:Sport! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 

     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

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

    // MARK: - Table view data source 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     return 1 
    } 


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") 
     if cell == nil{ 
      cell = UITableViewCell(style: .Default, reuseIdentifier:"resuseIdentifier") 
     } 
     cell?.textLabel?.text = sport.getNumberOfPlayers() 
     // Configure the cell... 

     return cell! 
    } 


    /* 
    // Override to support conditional editing of the table view. 
    override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
     // Return false if you do not want the specified item to be editable. 
     return true 
    } 
    */ 

    /* 
    // Override to support editing the table view. 
    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
     if editingStyle == .Delete { 
      // Delete the row from the data source 
      tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
     } else if editingStyle == .Insert { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
     }  
    } 
    */ 

    /* 
    // Override to support rearranging the table view. 
    override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { 

    } 
    */ 

    /* 
    // Override to support conditional rearranging of the table view. 
    override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
     // Return false if you do not want the item to be re-orderable. 
     return true 
    } 
    */ 

    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 
+0

Verwenden Sie die 'editButtonItem()' Funktion. – rmaddy

Antwort

0

Der generierte Code enthält die folgenden Anmerkungen:

// Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
// self.navigationItem.rightBarButtonItem = self.editButtonItem() 

Kommentar- der zweiten Zeile:

self.navigationItem.rightBarButtonItem = self.editButtonItem() 

Sie müssen möglicherweise auch für die Funktionalität einige der anderen Delegierten Funktionen implementieren, um Arbeit:

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool 
override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) 
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool 

Zum Beispiel sind die kleinen Balken auf der rechten Seite, die Sie berühren/halten, um Elemente neu anzuordnen, nur verfügbar, wenn Sie die entsprechenden Delegiertenmethoden implementieren.

+0

Vielen Dank! Das hat perfekt funktioniert :) –

+0

Ausgezeichnet! Es kann für andere hilfreich sein zu wissen, dass dies Ihr Problem gelöst hat (akzeptierte Antwort) – user212514

Verwandte Themen