2017-10-25 2 views
-2

Die Leute sagen mir, wie ich aus meiner Position herauskommen und so tun, dass, wenn ein neues Ereignis hinzugefügt wird, es der Anfang, nicht das Ende wird. Ich werde sehr dankbar für die Hilfe sein.Wie wird die erste neue Zeile in TableViewCell (swift) eingefügt?

Ich habe drei Arrays und ich hatte sie von den Elternzellen zu sortieren, und in dieser Linie, die ich sehr viel gespielt func Tableview (_ Tableview: UITableView, numberOfRowsInSection Abschnitt: Int) -> Int

import UIKit 
import Parse 


class PrognozSegmentViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { 


     var soccerString = [Soccer]() 
     var basketString = [Basketball]() 
     var tennisString = [Tennis]() 


    var refresh : UIRefreshControl! 




    @IBOutlet weak var tableView: UITableView! 
    @IBOutlet weak var segmentControl: UISegmentedControl! 
    @IBAction func btnSegment(_ sender: Any) { 

     tableView.reloadData() 

    } 




    override func viewDidLoad() { 
     super.viewDidLoad() 



     refresh = UIRefreshControl() 
     refresh.attributedTitle = NSAttributedString(string: "Потяните вниз чтоб обновить ресурс") 
     refresh.tintColor = UIColor.green 
     refresh.addTarget(self, action: #selector(PrognozSegmentViewController.refreshing), for: UIControlEvents.valueChanged) 
     tableView.addSubview(refresh) 
     setupSeg() 
     tableView.tableFooterView = UIView() 
     tableView.estimatedRowHeight = 88 
     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.separatorStyle = UITableViewCellSeparatorStyle.none 
     tableView.register(UINib(nibName:"TableViewCell",bundle:nil), forCellReuseIdentifier: "sportCell") 


     loadObjects1() 
     loadObjects2() 
     loadObjects3() 

    } 




    func setupSeg() { 

     let attributes = [ NSAttributedStringKey.foregroundColor : UIColor.yellow, 
          NSAttributedStringKey.font : UIFont.systemFont(ofSize: 10, weight: UIFont.Weight.bold)]; 
     let attributesSelected = [ NSAttributedStringKey.foregroundColor : UIColor.black, 
            NSAttributedStringKey.font : UIFont.systemFont(ofSize: 12, weight: UIFont.Weight.bold)]; 

     segmentControl.setTitleTextAttributes(attributes, for: UIControlState.normal) 
     segmentControl.setTitleTextAttributes(attributesSelected, for: UIControlState.selected) 

    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     var returnSport = 0 
     switch (segmentControl.selectedSegmentIndex) { 
     case 0 : 
      returnSport = soccerString.count 
      break 
     case 1 : 
      returnSport = basketString.count 
      break 
     case 2 : 
       returnSport = tennisString.count 
      break 
     default : 
      break 
     } 
     return returnSport 
    } 
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
      let sportCell = tableView.dequeueReusableCell(withIdentifier: "sportCell", for: indexPath) as! TableViewCell 
         switch (segmentControl.selectedSegmentIndex) { 
      case 0 : 



       let soccer = soccerString[indexPath.row] 

       sportCell.matchLabel.text = soccer.matchS 
          soccerString[indexPath.row].imagePrS.getDataInBackground {(data, error) in 
        sportCell.imageMatch.image = error == nil ? UIImage(data: data!) : nil 

       } 
       break 
      case 1 : 

       let basket = basketString[indexPath.row] 
       sportCell.matchLabel.text = basket.matchB 
       basketString[indexPath.row].imagePrB.getDataInBackground {(data, error) in 
        sportCell.imageMatch.image = error == nil ? UIImage(data: data!) : nil 

       } 
       break 
      case 2: 
       sportCell.matchLabel.text = tennisString[indexPath.row].matchT 

       tennisString[indexPath.row].imagePrT.getDataInBackground {(data, error) in 
         sportCell.imageMatch.image = error == nil ? UIImage(data: data!) : nil 

       } 
       break 
      default: 
       break 

       } 
      sportCell.selectionStyle = UITableViewCellSelectionStyle.none 

      let date = Date() 
      let calendar = Calendar.current 

      let yesterday = calendar.date(byAdding: .day, value: -1, to: date) 
      let dateFormatter = DateFormatter() 
      dateFormatter.dateFormat = "EEEE, MMM:d, yyyy" 
      dateFormatter.dateStyle = .short 
      dateFormatter.timeStyle = .short 
      dateFormatter.locale = Locale(identifier: "ru_UA") 
      dateFormatter.doesRelativeDateFormatting = true 

      let dataFormater2 = DateFormatter() 
      dataFormater2.dateFormat = "EEEE, MMM:d, yyyy" 
      dataFormater2.dateStyle = .short 
      dataFormater2.timeStyle = .short 
      dataFormater2.locale = Locale(identifier: "ru_UA") 
      dataFormater2.doesRelativeDateFormatting = true 


       sportCell.dataSave.text! = dateFormatter.string(from: date) 
       sportCell.dataSave.text = dateFormatter.string(from: yesterday!) 





       return sportCell 
      } 


    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

    func loadObjects1() { 
     let query = Soccer.query() as! PFQuery<Soccer> 

     query.findObjectsInBackground { (objects, error) in 
      if error == nil { 
       self.soccerString.removeAll() 

       self.soccerString = objects! 

       self.tableView.reloadData() 
      } else { 
       print(error!) 
      } 

      } 
    } 

     func loadObjects2() { 
     let query = Basketball.query() as! PFQuery<Basketball> 

     query.findObjectsInBackground { (objects, error) in 
      if error == nil { 
       self.basketString.removeAll() 

       self.basketString = objects! 

       self.tableView.reloadData() 
      } else { 
       print(error!) 
      } 

     } 
    } 

    func loadObjects3() { 
     let query = Tennis.query() as! PFQuery<Tennis> 


     query.findObjectsInBackground { (objects, error) in 
      if error == nil { 
       self.tennisString.removeAll() 

       self.tennisString = objects! 


       self.tableView.reloadData() 
      } else { 
       print(error!) 
      } 

     } 
    } 


    @objc func refreshing() { 

     loadObjects1() 
     loadObjects2() 
     loadObjects3() 
     tableView.reloadData() 
     refresh.endRefreshing() 

    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 


     switch (segmentControl.selectedSegmentIndex) { 


      case 0 : 
       if segue.identifier == "showSoccer" { 
        if let indexPath = tableView.indexPathForSelectedRow { 
      let destationViewController = segue.destination as! DetailSoccerTableViewController 

      destationViewController.detailSoccer = self.soccerString[indexPath.row] 


        } 
      } 



      case 1 : 
       if segue.identifier == "showBasket" { 
        let dvc = segue.destination as! DetailBasketViewController 
        if let indexPath = tableView.indexPathForSelectedRow { 
         let row = Int(indexPath.row) 
         dvc.baskets = basketString[row] 
        } 

      } 

      case 2 : 
       let destationVC: DetailTennisViewController = segue.destination as! DetailTennisViewController 
       if let indexPath = self.tableView.indexPathForSelectedRow { 
        let row = Int(indexPath.row) 
        destationVC.tenises = tennisString[row] 

       } 

       self.present(destationVC, animated: true, completion: nil) 


      default : 
       break 



      } 
     } 



    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

      switch (segmentControl.selectedSegmentIndex) { 

      case 0 : 
       let soccer = soccerString[indexPath.row] 

       performSegue(withIdentifier: "showSoccer", sender: soccer) 


       break 
      case 1 : 

       let basket = basketString[indexPath.row] 
       let destinationVC = DetailBasketViewController() 
       destinationVC.baskets = basket 
       self.performSegue(withIdentifier: "showBasket", sender: self) 
       break 
      case 2 : 

       let tennis = tennisString[indexPath.row] 
       let destTenVC = DetailTennisViewController() 
       destTenVC.tenises = tennis 

       self.performSegue(withIdentifier: "showTennis", sender: self) 

       break 
      default : 
       break 


     } 

    } 



} 
+2

Bitte nicht werfen Sie Ihre gesamte View-Controller-Code und erwarten, dass wir das Problem zu finden. Erstellen Sie stattdessen ein [mcve], das das Problem reproduziert und das veröffentlicht. – JAL

+0

was Sie suchen. Könnten Sie das im Detail erläutern? –

+0

Ich möchte die neue Zeile als erste hinzufügen –

Antwort

1

Wenn Ihr Problem das neue Objekt ist das letzte

wird ich nehme an, Sie sprechen von einem Array und Sie tun

array.append(item) 

Wenn Sie das Element eine haben wollen t Anfang tun:

array.insert(item, at: 0) 

Und dann

tableView.reloadData() 
+0

Erzähl mir, wie das in meiner Situation zu tun? Ich habe Probleme mit der Zeile returnSport er geht ohne "Count" .Ich habe es versucht und ich bekomme einen Fehler .... –

+0

Welcher Fehler in welcher Funktion, bitte präzisieren. Mit all Ihrem VC-Code ist es unklar, und die Leute können Ihnen nicht helfen. –

Verwandte Themen