10

iOS では、文字列 ID を UI オブジェクトに割り当てて、その ID でコード内で取得することはできますか?

Androidに似たものを探していますfindViewById(id)

4

3 に答える 3

13

使用できますviewWithTagが、タグのタイプは次のIntとおりです。

let superView = UIView()
let subView = UIView()
subView.tag = 100
superView.addSubview(subView)
let v = superView.viewWithTag(100)

使用する場合、xibまたはstoryboard次のように id をバインドできます。 ここに画像の説明を入力

obj を obj にバインドできるランタイムを使用しますが、必要ないようです:

objc_setAssociatedObject(superView, "key", subView, .OBJC_ASSOCIATION_RETAIN)
let v = objc_getAssociatedObject(superView, "key")

アップデート:

列挙型を使用してビューを取得できます:

enum UIKey:String {
    case AA = "aa"


    func findView(byKey:String ,fromView:UIView) -> UIView {
        let v :UIView!

        switch self {
            // get view from real tag value
            case .AA: v = fromView.viewWithTag(1)
        }

        return v
    }
}

次に使用します:

let dict = ["aa":123]

dict.forEach { (key,value) in
    let v = UIKey(rawValue: key)?.findView(key, fromView: self.view)
    //set v with your value

}
于 2016-06-16T04:54:14.687 に答える