2017-02-10 7 views
1

私は再利用可能な識別子を持つUITableViewでカスタムセルを作成しました。そのセルを削除するか、そのセルの色を変更するたびに、このセルと共にいくつかの他のセルも変更されます。テーブルビューで1つの行を変更すると、その行とともにいくつかの他のセルも変更されます。 (SWIFTプログラミング)

実際、1つのセルのみを変更したり、削除したりしてください。

import UIKit 
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    var itemName = ["ABCD", "EFGH", "IJK", "LMNO", "PQRST", "abcd", "efgh", "ijk", "lmno", "pqrst"] 

    //Group List. 
    var arrGroups = [GROUPLIST](repeating: GROUPLIST(), count: 100) 

    var nCount = 5 

    var nMaxCount = 100 

    var curItemName:String = "" 

    @IBOutlet weak var tableView: UITableView! 

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     //Return the row count of the table. 
     return nCount 
    } 


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

     arrGroups[indexPath.row].strGroupName = itemName[indexPath.row % itemName.count] as NSString 

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell 

     //Select the image for the image view. 
     cell.myImage.image = UIImage(named: "download.jpeg") 

     //Convert the image into oval shape. 
     cell.myImage.layer.cornerRadius = cell.myImage.frame.size.width/2 

     //Clip the image according to the bound value. 
     cell.myImage.clipsToBounds = true 



     //Select the text to display in the label view. 
     cell.myLabel.text = String(arrGroups[indexPath.row].strGroupName) 

     cell.myLabel.adjustsFontSizeToFitWidth = true 
     cell.myLabel.minimumScaleFactor = 0.5 

     cell.mySubLabel.text = "SubTitle" 
     cell.mySubLabel.adjustsFontSizeToFitWidth = true 

     //To prefetch the data 
     if(nCount - 5 == indexPath.row) 
     { 
      if(nCount < nMaxCount) 
      { 
       //Load more. 
       nCount += 10 

       tableView.reloadData() 
      } 
     } 

     return(cell) 
    } 


    //To set the row height. 
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     //Get the main screen size. 
     let screenSize: CGRect = UIScreen.main.bounds 
     return screenSize.height/5 
    } 

    //Return true to edit/delete the specified row. 
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     return true 
    } 


    //Remove button press action. 
    @IBAction func buttonRemove(_ sender: UIButton) { 


     let point = sender.convert(CGPoint.zero, to: self.tableView) 

     let indexPath = self.tableView.indexPathForRow(at: point) 


     let cell = tableView.cellForRow(at: indexPath!) as! ViewControllerTableViewCell 

     cell.buttonRemove.setImage((UIImage(named: "download.jpeg")), for: UIControlState.normal) 


    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 
      // Do any additional setup after loading the view, typically from a nib. 
    } 

} 

class GROUPLIST : NSObject{ 
    //Group name. 
    var strGroupName = NSString() 
    //Member count. 
    var nMember = NSInteger() 
    //Group Image. 
    var strURL = NSString() 
} 

答えて

2

TableViewCellは、スクロールアップまたはスクロールするときに再利用されます。あなたは、関数cellForRowAtのセルを設定ファイル、データソースを変更して、テーブルまたはセルをリロードする必要があります

tableView.reloadData() 
tableView.reloadRows(at: [indexPath], with: .none) 
tableView.deleteRows(at: [indexPath], with: .automatic) 

更新:データソースを変更するには、&uはどこ3の上方追加を教えてくださいすることができますどのように

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    //Return the row count of the table. 
    return itemName.count 
} 


//Remove button press action. 
@IBAction func buttonRemove(_ sender: UIButton) { 
    let point = sender.convert(CGPoint.zero, to: self.tableView) 
    if let indexPath = self.tableView.indexPathForRow(at: point) { 
     itemName.remove(at: indexPath.row) //change data model 
     tableView.deleteRows(at: [indexPath], with: .automatic) //update cell 
    } 
} 
+0

コード行。 –

+0

私はremoveButtonのイメージを変更したいと思います。だから私はそれを変更するたびに、他のいくつかの行画像も変更されています。 –

+0

buttonRemove(_送信者:UIButton)FUNC '@IBAction { LET点= sender.convert(にCGPoint.zero:self.tableView):{ LET indexPath = self.tableView.indexPathForRow(点で)させた場合cell = tableView.cellForRow(at:indexPath)as! (のための: "download.jpeg"))、:(UIImage(名前UIControlState.normal)ViewControllerTableViewCell cell.buttonRemove.setImage tableView.reloadRows(AT:[indexPath]を有する:.none) }} ' –

関連する問題