Переключение классов textField - PullRequest
0 голосов
/ 27 января 2020

У меня есть CollectionView с CollectionViewCells, которые я переключил. Сначала у меня есть это

I need to set PhoneNumber

После того, как я получу вторую ячейку с кодом

here is my secondCell

Я использую одни и те же продажи с разными методами для изменения текста, но в первом cell.textField в качестве пользовательской библиотеки cocoapod TKFormTextField, а во втором случае я хочу использовать простой UITextField. Что такое enum и как мне его использовать?

вот моя клетка

    class PhoneNumberCollectionViewCell: UICollectionViewCell, NiBLoadable {



    @IBOutlet weak var phoneLabel: UILabel!
    @IBOutlet weak var PhoneNumberTextField: UITextField!
    @IBOutlet weak var SecurityLabel: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
        Decorator.decorate(self)

    }

    func setPhoneLabelText(text: String) {
        phoneLabel.text = text
    }

    func setSecurityLabel(text: String) {
        SecurityLabel.text = text
    }


}

    extension PhoneNumberCollectionViewCell {

        fileprivate class Decorator {
            static func decorate(_ cell: PhoneNumberCollectionViewCell) {
                cell.phoneLabel.textColor = UIColor(red: 50.0/255.0, green: 50.0/255.0, blue: 50.0/255.0, alpha: 1.0)
                cell.SecurityLabel.textColor = UIColor(red: 50.0/255.0, green: 50.0/255.0, blue: 50.0/255.0, alpha: 0.6)
                cell.phoneLabel.font = UIFont(name: "OpenSans", size: 15)
                cell.SecurityLabel.font = UIFont(name: "OpenSans", size: 12)
            }
        }
    }




    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let models = model[indexPath.row]

    switch models {
    case .phoneNumber:
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PhoneNumberCollectionViewCell.name, for: indexPath) as? PhoneNumberCollectionViewCell {
            cell.PhoneNumberTextField.text = self.phoneNumber
            cell.setSecurityLabel(text: "_ALLYOURDATAISINSECUREDAREA")
            cell.setPhoneLabelText(text: "_YOURPHONENUMBER")
            return cell
        }
    case .confirmCode:
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PhoneNumberCollectionViewCell.name, for: indexPath) as? PhoneNumberCollectionViewCell {
            cell.PhoneNumberTextField.text = self.confirmCode
            cell.setPhoneLabelText(text: "_ENTERCODEFROMSMS")
            cell.setSecurityLabel(text: "_IFYOUDIDNTRECIEVETHESMS")
            cell.PhoneNumberTextField.defaultTextAttributes.updateValue(5.0, forKey: NSAttributedString.Key(rawValue: NSAttributedString.Key.kern.rawValue))
            return cell
        }
    }
    return UICollectionViewCell.init()
}

1 Ответ

0 голосов
/ 27 января 2020

У вас есть больше возможностей сделать это:

  • Создать две разные пользовательские ячейки для разных параметров.

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let models = model[indexPath.row]
    
    switch models {
    case .phoneNumber:
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: FirstCustomCell.name, for: indexPath) as? FirstCustomCell {
            cell.PhoneNumberTextField.text = self.phoneNumber
            cell.setSecurityLabel(text: "_ALLYOURDATAISINSECUREDAREA")
            cell.setPhoneLabelText(text: "_YOURPHONENUMBER")
            return cell
        }
    case .confirmCode:
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: SecondCustomCell.name, for: indexPath) as? SecondCustomCell {
            cell.PhoneNumberTextField.text = self.confirmCode
            cell.setPhoneLabelText(text: "_ENTERCODEFROMSMS")
            cell.setSecurityLabel(text: "_IFYOUDIDNTRECIEVETHESMS")
            cell.PhoneNumberTextField.defaultTextAttributes.updateValue(5.0, forKey: NSAttributedString.Key(rawValue: NSAttributedString.Key.kern.rawValue))
            return cell
        }
    }
    return UICollectionViewCell.init()
    }
    
  • На PhoneNumberCollectionViewCell создает оба текстовых поля и задает альфа-значение 0.

    class PhoneNumberCollectionViewCell: UICollectionViewCell, NiBLoadable {
    
    @IBOutlet weak var phoneLabel: UILabel!
    @IBOutlet weak var PhoneNumberTextField: TKFormTextField!,
    @IBOutlet weak var CodeFromSmsTextField: UITextField!
    @IBOutlet weak var SecurityLabel: UILabel!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        Decorator.decorate(self)
        PhoneNumberTextField.alpha = 0
        CodeFromSmsTextField.alpha = 0
    
    }
    
    func setPhoneLabelText(text: String) {
        phoneLabel.text = text
    }
    
    func setSecurityLabel(text: String) {
        SecurityLabel.text = text
    }
    }
    

И после этого вы можете показать, что вам нужно.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let models = model[indexPath.row]

    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PhoneNumberCollectionViewCell.name, for: indexPath) as? PhoneNumberCollectionViewCell else { return UICollectionViewCell() }

    switch models {
    case .phoneNumber:
            cell.PhoneNumberTextField.text = self.phoneNumber
            cell.setSecurityLabel(text: "_ALLYOURDATAISINSECUREDAREA")
            cell.setPhoneLabelText(text: "_YOURPHONENUMBER")
            cell.PhoneNumberTextField.alpha = 1
    case .confirmCode:
            cell.PhoneNumberTextField.text = self.confirmCode
            cell.setPhoneLabelText(text: "_ENTERCODEFROMSMS")
            cell.setSecurityLabel(text: "_IFYOUDIDNTRECIEVETHESMS")
            cell.PhoneNumberTextField.defaultTextAttributes.updateValue(5.0, forKey: NSAttributedString.Key(rawValue: NSAttributedString.Key.kern.rawValue))
            cell.CodeFromSmsTextField.alpha = 1
    }
}
...