2017-11-05 13 views
-3

異なるデータを含む複数の行で動的にテーブルビューを作成したいと思います。私は迅速に新しい行を作成する方法を知らない。私は3行を作成し、各行に異なるデータを追加したいと思います。私は配列データを更新することができ、テーブルビューをリロードすることができます。私はループ内のデータを更新し、テーブルビューを再ロードすると、最後のデータのみが表示されます。複数の行を含む動的なテーブルビューを迅速に作成するにはどうすればよいですか?

VAR I = 0

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    tableView.frame = CGRect(x: 5, y:200 ,width: self.view.frame.width, height: 400) 
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 
    tableView.delegate = self 
    tableView.dataSource = self 
    tableView.layer.borderWidth = 2 

    self.view.addSubview(tableView) 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return products.count 
} 
func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 


    let tf = UITextField(frame: CGRect(x: 320, y: 10*i , width: 300, height:20)) 
    tf.placeholder = "_" 
    tf.tag = indexPath.row 
    tf.font = UIFont.systemFont(ofSize: 15) 

    let pest = UILabel(frame: CGRect(x: 10, y: 10*i, width: 300, height: 60)) 

    pest.font = UIFont.systemFont(ofSize: 15) 
    pest.numberOfLines = 0 
    pest.text = self.products[indexPath.row] 

    let pp = UILabel() 
    pp.text = "PP" 


    cell.contentView.addSubview(pest) 
    cell.contentView.addSubview(tf) 



    return cell 

} 
override func viewDidAppear(_ animated: Bool) { 


    createTable() 
} 

    func createTable(){ 
    for index in 1...3{ 
     if(index == 2){ 
      i = index 
      self.products = ["r1","r2","r3","r4"] 
      tableView.reloadData() 


     } 
     else if(index == 3){ 

      i = index 
      self.products = ["d1","d2","d3","d4"] 
      tableView.reloadData() 

     } 
     else{ 

     } 

    } 
} 

enter image description here

答えて

0

あなたがproductsでデータを更新する場合は、あなたが呼び出すことができます。これは私のコードであるインデックス2 でforループで追加されたテーブルビュー欠落したデータtableView.reloadData()すべてのtableView関数を再度呼び出す。あなたが望むものを反映するようにそれらを設定したと仮定すると、これは新しい行を作成するはずです。

+0

製品のデータを2回更新したい。しかし、私は私のデータを2回更新し、tableView.reloadData()と呼ばれる場合は、最後のデータだけが表示されます。最初のデータは表に表示されません。 – Abhishek

+0

'reloadData()'を呼び出した後、 'products'の更新データがtableViewに表示されないということはありますか? – LFHS

+0

self.products = ["d1"、 "d2"、 "d3"、 "d4"]がtableviewに表示されています。しかし、self.products = ["r1"、 "r2"、 "r3"、 "r4"]はtableviewに表示されません。 – Abhishek

関連する問題