2016-12-31 4 views
-1

zu verwenden Ich habe zwei Tabellenansichten in meinem Projekt, Kann mir helfen, den Index path.row von erste Tabellenansicht, die die Haupttabelle ist, die in der zweiten Tabellenansicht verwendet wird, die die Untertabelle der Haupttabelle ist.Wie bekomme ich den Index path.row der ersten Tabellenansicht, um es in der zweiten Tabellenansicht mit Swift3, Xcode8

Dies ist meine MainTableView.

import UIKit 

    class MainTableViewController: UITableViewController { 


var womenArray = [women]() 
var data : [String] = [] 
let backendless = Backendless() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    data = ["1","2","3","4","5"] 

} 

override func numberOfSections(in tableView: UITableView) -> Int { 

    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return data.count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 



    cell.textLabel?.text = data[indexPath.row] 

    return cell 
} 


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

    self.womenArray.removeAll() 

    if (indexPath.row == 0) { 

     let whereClause = "Desc = 'test'" 
     let dataQuery = BackendlessDataQuery() 
     dataQuery.queryOptions.pageSize=50 
     dataQuery.whereClause = whereClause 

     backendless.data.of(women.ofClass()).find(dataQuery,response: {(result: BackendlessCollection?) -> Void in 


      let data = result?.getCurrentPage() 

      for obj in data! as! [women] { 

       self.womenArray.append(obj) 

      } 
let SubWomenView: WomenSubTableViewController = self.storyboard!.instantiateViewController(withIdentifier: "subwomen") as! WomenSubTableViewController 

SubWomenView.subWomenArray = self.womenArray 

self.navigationController?.pushViewController(SubWomenView, animated: true) 



}, 

error: { (fault: Fault?) -> Void in 

print(fault) 

let alert = UIAlertController(title: "info", message:"يرجى الاتصال بالانترنيت", preferredStyle: .alert) 

    alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in 


    }) 

self.present(alert, animated: true){} 


     }) 



    }else if indexPath.row == 1{ 

     let whereClause = "Desc = 'test2'" 
     let dataQuery = BackendlessDataQuery() 
     dataQuery.queryOptions.pageSize=50 
     dataQuery.whereClause = whereClause 

     backendless.data.of(women.ofClass()).find(dataQuery,response: {(result: BackendlessCollection?) -> Void in 


      let data = result?.getCurrentPage() 

      for obj in data! as! [women] { 

       self.womenArray.append(obj) 

      } 
let SubWomenView: WomenSubTableViewController = self.storyboard!.instantiateViewController(withIdentifier: "subwomen") as! WomenSubTableViewController 
SubWomenView.subWomenArray = self.womenArray 
self.navigationController?.pushViewController(SubWomenView, animated: true) 



      }, 

    error: { (fault: Fault?) -> Void in 



let alert = UIAlertController(title: "info", message:"يرجى الاتصال بالانترنيت", preferredStyle: .alert) 

alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in 


    }) 

self.present(alert, animated: true){} 


    }) 



    } 
     } 

    } 

und dies ist meine SubTableView.

import UIKit 

class SubTableViewController: UITableViewController { 

var subWomenArray = [women]() 


    let backendless = Backendless() 

override func viewDidLoad() { 
    super.viewDidLoad() 



     } 

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

} 

// MARK: - Table view data source 

override func numberOfSections(in 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 subWomenArray.count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


    if let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? WomenSubCell{ 

     let ImgURL = URL(string : self.subWomenArray[(indexPath as NSIndexPath).row].ImgURL!) 

     cell.WomenImgView.sd_setImage(with: ImgURL) 

     return cell 

    }else{ 

     let cell = WomenSubCell() 

     let ImgURL = URL(string : self.subWomenArray [(indexPath as NSIndexPath).row].ImgURL) 

     cell.WomenImgView.sd_setImage(with: ImgURL) 



     return cell 
    } 


    } 




    } 
+0

Es ist nicht klar, was Sie fragen. Sind beide Tabellenansichts-Controller in einem übergeordneten Ansichts-Controller integriert und werden sie gleichzeitig auf dem Bildschirm angezeigt, oder wird auf einen Link zum zweiten Tabellenansicht-Controller geklickt? Wenn man zum nächsten führt, wie ruft man den zweiten View-Controller auf? Sie müssen mehr Informationen bereitstellen. –

+0

Ich benutze die if-Anweisung in Meine Haupttabelle, um Daten für jeden Index path.row herunterzuladen, jetzt möchte ich diese if-Anweisungen in der Untertabelle verwenden, statt der Haupttabelle zum Download von Daten können Sie helfen? . –

+0

Ich verstehe immer noch nicht. Ist die zweite Tabellenansicht ein anderer Bildschirm? Also ist das ein Master/Detail Setup? –

Antwort

0

Sie können eine Eigenschaft auf Ihrer Sub Tabellenansicht erstellen und den Wert von indexPath.row zuweisen, wie Sie das Array in der folgenden Zeile zuweisen:

SubWomenView.subWomenArray = self.womenArray

+0

Es funktioniert nicht, ich versuche, den Index path.row der ersten Tabellensicht zu bekommen, um es in der zweiten Tabellenansicht zu verwenden, also möchte ich die if-Anweisung in der zweiten Tabelle anstelle der ersten Tabelle in der zweiten Tabelle verwenden . –

0

vielleicht Tuple verwenden ist leichter zu verstehen. SubWomenView.subWomenArray = (index.row, self.womenArray)

In subtableview,

var subWomenArray: (Int, [Frauen])

Dann subWomenArray.1 auf Ihre [Frauen] beziehen

+0

Es funktioniert nicht, ich versuche, den Index path.row der ersten Tabellenansicht zu bekommen, um es in der zweiten Tabellenansicht zu verwenden, also möchte ich die if-Anweisung anstelle der ersten Tabelle in der zweiten Tabelle verwenden. –

Verwandte Themen