Swift: доступ к детям UIView из [Int: UIView] () - PullRequest
0 голосов
/ 02 июля 2018

Я использую приведенный ниже код для добавления view к scrollview и сохранения view к viewAll

var viewAll = [Int: UIView]()

i = 0
for pack in packs as! [[String: AnyObject]] {
    let packId = Int(pack["packId"] as! String)
    let packTitle = pack["packTitle"] as! String

    let view = CategoryClass.createMyClassView()
    view.pcId.text = packId
    view.pcTitle.text = packTitle

    viewAll[i] = view
    i = i+1

    myScrollView.addSubview(view)
}

Работает нормально.

Теперь я хочу снова получить доступ к детям зрения:

for view in viewAll {
    view.value.pcId.text = "TEST"  
}

Эта строка не работает: view.value.pcId.text = "TEST"

CategoryClass:

class CategoryClass: UIView {
    @IBOutlet weak var pcId: UILabel!
    @IBOutlet weak var pcTitle: UILabel!

    class func createMyClassView() -> CategoryClass {
        let myClassNib = UINib(nibName: "Category", bundle: nil)
        return myClassNib.instantiate(withOwner: nil, options: nil)[0] as! CategoryClass
    }
}

1 Ответ

0 голосов
/ 02 июля 2018

Это из-за кастинга нужно поменять

var viewAll = [Int: UIView]()

до

var viewAll = [Int: CategoryClass]()

//

также измените это

view.value.pcId.text = "TEST"  

до

view.pcId.text = "TEST"  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...