单击按钮时的排序菜单

时间:2016-09-05 18:30:12

标签: ios arrays swift swift2

我需要包含两个按钮,一个按字母顺序排序菜单,另一个按钮保留正常选项。 我创建了按钮并创建了事件,但是当我点击单元格时,即使使用self.tableview.reloadData()也未对其进行排序。 你知道我能做到这一点吗?

P.S:我正在使用nib / xib文件

以下代码:

import UIKit

class ExpandableTableViewViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!

    var selectedCellIndexPath: NSIndexPath?

    ////Heigh for cell in subTableView
    // Para pessoas que falam a língua portuguesa -> Tamanho da célula da tabela (principal e subs)
    let selectedCellHeightForSubTable: CGFloat = 40.0



    ///Heigh for cell in Main Table in (unselected)
    //Para pessoas que falam a língua portuguesa -> Tamanho da célula quando não escolhida
    let unselectedCellHeight: CGFloat = 110.0


    ////Array to save references for SubTables
    //Para pessoas que falam a língua portuguesa -> Neste array são salvas as referências para as subtabelas
    var subTables:[UITableView] = [UITableView]();


    ///fake data /// tuples type
    // Para pessoas que falam a língua portuguesa -> Aqui são instanciados os vetores que serão utilizados
    // na instanciação das células principais que serão utilizadas no armazenamento das células que irão compor
    // as tabelas e a subtabelas
    var data:([String],[[String]],[[String]],[[String]])=([String](),[[String]](),[[String]](),[[String]()]);


    override func viewDidLoad() {
        super.viewDidLoad()


        let button = UIButton(frame: CGRect(x: 25, y: 25, width: 70, height: 50))
        button.backgroundColor = .greenColor()
        button.setTitle("Ordena", forState: .Normal)
        button.addTarget(self, action: #selector(buttonAction), forControlEvents: .TouchUpInside)

        self.view.addSubview(button)

        ///Register Nib file for Main Cells
        // Para pessoas que falam a língua portuguesa -> Aqui eu faço o registro dos arquivos nib que representam
        // as células principais
        tableView.registerNib(UINib(nibName: "ExpandableCellTableViewCell",bundle: nil), forCellReuseIdentifier: "cell");


        ////Initialize array with fake data
        // Para pessoas que falam a língua portuguesa -> Aqui eu tenho a presença do método InitialiDataArray()
        // que realiza a instanciação dos vetores das células principais e secundárias.
        self.data = self.InitializeDataArray()

        self.tableView.reloadData();
    }
     func buttonAction(sender: UIButton!) {


        self.data = self.InitializeDataArraySort()
        self.tableView.reloadData()


        }

    // Para pessoas que falam a língua portuguesa -> Retorna o número de seções na TableView
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1;
    }

    // Para pessoas que falam a língua portuguesa -> Ajusta as células da TableView nas subtabelas
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        ///Main table
        if tableView == self.tableView{
            return data.0.count;
        }else{
            if let index = self.subTables.indexOf(tableView) {
                return data.1[index].count+1;///+1 for Header cell in subtableView
            }
            return 0;
        }

    }


    // Para pessoas que falam a língua portuguesa -> Ajuste das células presentes nas linhas (subtabelas)
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        if tableView == self.tableView {
            if selectedCellIndexPath == indexPath {

                ////unselected Heigh + heigh for every cell in subtable
                return unselectedCellHeight+selectedCellHeightForSubTable*CGFloat(self.data.1[indexPath.row].count+1)
            }
            return unselectedCellHeight
        }else{
            return selectedCellHeightForSubTable
        }
    }


    // Para pessoas que falam a língua portuguesa -> Processo de seleção das células e inclusão dos efeitos
    // de expandir e colapsar.
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        if tableView == self.tableView {



            if selectedCellIndexPath != nil && selectedCellIndexPath == indexPath {

                let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! ExpandableCellTableViewCell;
                //let cell2 = self.tableView.cellForRowAtIndexPath(indexPath)!
                //let textoo = (cell2.viewWithTag(4) as! UILabel).text

               // print("Yuri 2")
               // print(textoo)

                cell.directionImageView.image = UIImage(named: "down");

                tableView.cellForRowAtIndexPath(indexPath)?.viewWithTag(3)!.hidden = true;
                selectedCellIndexPath = nil


            } else {
                selectedCellIndexPath = indexPath

                let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! ExpandableCellTableViewCell;
                cell.directionImageView.image = UIImage(named: "up");

                tableView.cellForRowAtIndexPath(indexPath)?.viewWithTag(3)!.hidden = false;
            }




            tableView.beginUpdates()
            tableView.endUpdates()

            if selectedCellIndexPath != nil {
                // This ensures, that the cell is fully visible once expanded
                tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .None, animated: true)

            }
        }

    }

    // Para pessoas que falam a língua portuguesa -> Efeitos de expansão e colapso quando a célula não foi 
    //selecionada
    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        if self.tableView.isEqual(tableView){
            let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! ExpandableCellTableViewCell;
            cell.directionImageView.image = UIImage(named: "down");
            cell.viewWithTag(3)!.hidden = true;
        }

    }


    // Para pessoas que falam a língua portuguesa -> Preenchimento do conteúdo dos vetores nas células principais
    // e secundárias
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell:UITableViewCell=UITableViewCell();
        if tableView == self.tableView{
            cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
                as! ExpandableCellTableViewCell;

            (cell.viewWithTag(1) as! UILabel).text = self.data.0[indexPath.row]

            let subtable = cell.viewWithTag(3) as! UITableView;
            subtable.delegate = self;
            subtable.dataSource = self;

            subtable.registerNib(UINib(nibName: "SubTableCellTableViewCell",bundle: nil), forCellReuseIdentifier: "sub_cell");


            self.subTables.append(subtable);

            subtable.reloadData();

        }else{
            cell = tableView.dequeueReusableCellWithIdentifier("sub_cell", forIndexPath: indexPath)

            print(indexPath.row)
            print(indexPath.section)

            if indexPath.row>0{
                if let index = self.subTables.indexOf(tableView) {


                    (cell.viewWithTag(1) as! UILabel).text = self.data.1[index][indexPath.row-1]
                    (cell.viewWithTag(2) as! UILabel).text = self.data.2[index][indexPath.row-1]
                    (cell.viewWithTag(3) as! UILabel).text = self.data.3[index][indexPath.row-1]

                   // let texto = (cell.viewWithTag(1) as! UILabel).text
                   // print(texto)

                }
            }



        }

       // if("verdade".isEqualToString("verdade"))
        //{
           // print("Entrei")
        //}

        cell.selectionStyle = .None
       // let tex = (cell.viewWithTag(1) as! UILabel).text
       // print("Yuri")
       // print(tex)
        return cell;
    }



    // Para pessoas que falam a língua portuguesa -> Declaração do conteúdo das células principais e 
    // secundárias
    public func InitializeDataArray()->([String],[[String]],[[String]],[[String]]){

        var mainCells = [String]();
        var col1_SubCells = [[String]]();
        var col2_SubCells = [[String]]();
        var col3_SubCells = [[String]]();


        ////Expandable Cells Data
        mainCells.append("Genesis");
        mainCells.append("Exodus");
        mainCells.append("Leviticus");
        mainCells.append("Numbers");
        //        mainCells.append("Cell 5");

        ////First Main cell data

        ///First Col////////
        var tempArr:[String] = [String]();
        tempArr.append("Chapters")
        tempArr.append("Gen 3")
        tempArr.append("Gen 6")
        tempArr.append("Gen 9")


        col1_SubCells.append(tempArr);

        ///2nd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Gen 2")
        tempArr.append("Gen 5")
        tempArr.append("Gen 8")


        col2_SubCells.append(tempArr);

        ///3rd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Gen 1")
        tempArr.append("Gen 4")
        tempArr.append("Gen 7")


        col3_SubCells.append(tempArr);


        ////2nd Main cell data////////

        ///First Col
        tempArr = [String]();
        tempArr.append("Chapters")
        tempArr.append("Exo 3")
        tempArr.append("Exo 6")
        tempArr.append("Exo 9")


        col1_SubCells.append(tempArr);

        ///2nd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Exo 2")
        tempArr.append("Exo 5")
        tempArr.append("Exo 8")


        col2_SubCells.append(tempArr);

        ///3rd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Exo 1")
        tempArr.append("Exo 4")
        tempArr.append("Exo 7")


        col3_SubCells.append(tempArr);



        ////3rd Main cell data////////

        ///First Col
        tempArr = [String]();
        tempArr.append("Chapters")
        tempArr.append("Lev 3")
        tempArr.append("Lev 6")
        tempArr.append("Lev 9")


        col1_SubCells.append(tempArr);

        ///2nd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Lev 2")
        tempArr.append("Lev 5")
        tempArr.append("Lev 8")


        col2_SubCells.append(tempArr);

        ///3rd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Lev 1")
        tempArr.append("Lev 4")
        tempArr.append("Lev 7")


        col3_SubCells.append(tempArr);


        ////4th Main cell data////////

        ///First Col
        tempArr = [String]();
        tempArr.append("Chapters")
        tempArr.append("Num 3")
        tempArr.append("Num 6")
        tempArr.append("Num 9")


        col1_SubCells.append(tempArr);

        ///2nd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Num 2")
        tempArr.append("Num 5")
        tempArr.append("Num 8")
        tempArr.append("Num 11")

        col2_SubCells.append(tempArr);

        ///3rd Col
        tempArr = [String]();
        tempArr.append("")
        tempArr.append("Num 1")
        tempArr.append("Num 4")
        tempArr.append("Num 7")
        tempArr.append("Num 10")

        col3_SubCells.append(tempArr);



        return (mainCells,col1_SubCells,col2_SubCells,col3_SubCells);
    }


}

0 个答案:

没有答案