簡體   English   中英

當在表視圖中選擇特定單元格時,如何使用另一個單元格擴展或替換單元格

[英]how to expand or replace the cell with another cell, when an particular cell select in table view

我已經在SO中問過這個疑問/問題了。 但沒有得到解決方案。 請幫幫我....

我有一個表視圖,將顯示名稱數據列表,直到10個數據。 但我需要的是,當用戶按任何單元格時,該單元格應該替換為另一個單元格,其中包含一些圖像,電話號碼,相同的數據名稱。 怎么做。

我有兩個xib:1。normalcell 1. normalcell, 2. expandable/replace cell

這是我的viewconrolelr.swift

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


    @IBOutlet weak var tableView: UITableView!

    @IBOutlet weak var Resultcount: UILabel!

    var tableData = ["thomas", "Alva", "Edition", "sath", "mallko", "techno park",... till 10 data]
    let cellSpacingHeight: CGFloat = 5

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

        var nib = UINib(nibName:"customCell", bundle: nil)
        tableView.registerNib(nib, forCellReuseIdentifier: "cell")
        Resultcount.text = "\(tableData.count) Results"



    }
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
         return self.tableData.count
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return cellSpacingHeight
    }

    // Make the background color show through
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerView = UIView()
        headerView.backgroundColor = UIColor.clearColor()
        return headerView
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


        var cell:customCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! customCell


        cell.vendorName.text = tableData[indexPath.section]

        return cell


    }




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


}

啟動我的單元格將如下所示:

在此輸入圖像描述

當我按下那個單元格時,我需要做一些像這樣的事情來替換下面的單元格:

在此輸入圖像描述

但是當我再次按下同一個細胞時,它應該再次進入正常細胞。

怎么做 ??

首先修改tableView:cellForRowAtIndexPath:實現如下。 然后,您需要實現單擊處理程序。 一種方法是在MyCell類中。 另一種方法是覆蓋selectRowAtIndexPath 如果不知道你想要什么(例如多重選擇和單選),很難給出實際的代碼,但這里有些東西。

BOOL clickedRows[MAX_ROWS]; // Init this array as all false in your init method. It would be better to use NSMutableArray or something similar...

// selectRowAtIndexPath code
int row = indexPath.row
if(clickedRows[row]) clickedRows[row]=NO; // we reverse the selection for the row
else clickedRows[row]=YES;
[self.tableView reloadData];

// cellForRowAt... code
MyCell *cell = [tableView dequeueResuableCell...
if(cell.clicked) { // Nice Nib
     [tableView registerNib:[UINib nibWithNibName... for CellReuse...
} else { // Grey Nib
     [tableView registerNib:[UINib nibWithNibName... for CellReuse...
}

您需要在xib上創建兩個獨立的單元格。 然后你可以使用check加載。你可以復制和粘貼它將完美地工作。 在cellForRow中這樣:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if selectedIndexPath == indexPath && self.isExpand  == true{
            let cell = tableView.dequeueReusableCell(withIdentifier: "LeaveBalanceExpandedCell", for: indexPath) as! LeaveBalanceExpandedCell
            cell.delegate = self
            return cell
        }
        else{
            let cell = tableView.dequeueReusableCell(withIdentifier: "LeaveBalanceNormalCell", for: indexPath) as! LeaveBalanceNormalCell
            return  cell
        }
    }
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
//        cell.animateCell(cell)
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if selectedIndexPath == indexPath{
    if isExpand == true{
        self.isExpand = false
    }
    else{
        self.isExpand = true
    }
    }
    else{
        selectedIndexPath = indexPath
        self.isExpand = true
    }
        self.tableView.reloadData()
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM