如何使用Swift在UICollectionView中显示/隐藏单元格?

时间:2016-07-07 06:39:24

标签: ios swift uicollectionview uicollectionviewcell

我使用UICollectionView显示了单元格(0到9和确定,取消按钮)。

以下是我想要的:

  1. 首先隐藏“确定”和“取消”按钮。
  2. 当用户选择至少一个号码时,“取消”按钮变为可见。
  3. 当用户选择总共四个数字时,“确定”按钮也会变为可见。
  4. Screenshot for problem

    以下是我所做的代码:

    var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "Cancel","0", "OK"]
    
    ...
    
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    
       let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CustomCollectionViewCell
    
            cell.lblNumber!.text = self.items[indexPath.item]
    
            if (self.items[indexPath.item])=="Cancel" {
                cell.hidden = true; 
            }
    
            if (self.items[indexPath.item])=="OK" {
                cell.hidden = true;
            } 
    
            return cell
        }
    
     func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    
        print("You selected cell #\(indexPath.item) and value : \(self.items[indexPath.item]) count : \(counter)")
        ...
      }
    

    如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

if "OK" & "CANCEL" both buttons are hidden first , you can use the textfield in which the text is printed by pressing any button . 
 if textfield.text == "" {
  okbutton.ishidden == true
  cancel button.ishdden == true
 }else if textfield.text != "" {
  okbutton.ishidden == false
  cancel button.ishdden == false
}

答案 1 :(得分:0)

嗨,这里是回答示例:

import UIKit

class ViewController: UIViewController {

    var objectNumCollectionViewCell : NumCollectionViewCell = NumCollectionViewCell()

    @IBOutlet weak var lblnumber: UILabel!
    var items = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "Cancel","0", "OK"]

    var strnum: String = ""

    @IBOutlet weak var collectionviewMain: UICollectionView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    // MARK: - CollectionView DataSource Method

    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return 1
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
        return items.count
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
            objectNumCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! NumCollectionViewCell
            objectNumCollectionViewCell.lblNum.text = items[indexPath.item] as String

        if indexPath.item == 9 {
            if lblnumber.text?.characters.count > 0 {
                objectNumCollectionViewCell.hidden = false
            }
            else{
                objectNumCollectionViewCell.hidden = true
            }
        }
        else
        {
            objectNumCollectionViewCell.hidden = false
        }

        if indexPath.item == 11 {
            if strnum.characters.count > 3 {
              objectNumCollectionViewCell.hidden = false
            }
            else{
                objectNumCollectionViewCell.hidden = true
            }
        }

        objectNumCollectionViewCell.layer.borderWidth = 1.0
        objectNumCollectionViewCell.layer.borderColor = UIColor.darkGrayColor().CGColor
        objectNumCollectionViewCell.layer.cornerRadius = 10.0
        objectNumCollectionViewCell.layer.masksToBounds = true

        return objectNumCollectionViewCell
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets{
            return UIEdgeInsetsMake(0, 5, 0, 5);
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
        return CGSizeMake(self.view.frame.size.width/3-10, 100)
    }

    // MARK: - CollectionView Delegate Method

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){

        objectNumCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! NumCollectionViewCell

        if indexPath.item == 9 {
            strnum.removeAtIndex(strnum.endIndex.predecessor())
        }
        else if indexPath.item == 11{
            let alert:UIAlertView = UIAlertView(title: "Number Demo", message: "You have Pressed Ok", delegate: nil, cancelButtonTitle: "ok")

            dispatch_async(dispatch_get_main_queue(), {
                alert.show()
            })
        }
        else
        {
            if strnum.characters.count < 4 {
                strnum.append(Character(items[indexPath.item] as String))
            }
       }

        lblnumber.text = strnum
        collectionviewMain.reloadData()
    }
}

// Custom cell class
// identifier = "cell"

import UIKit

class NumCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var lblNum: UILabel! // please declare label in storyboard

}