在swift中的特定位置查找视图

在swift中的特定位置查找视图,swift,Swift,我在swift中得到了一个简单的视图,并将9个按钮作为3x3网格放在上面,现在我需要每个按钮的标记,但不知道如何获得每个按钮,因此我可以使用for循环获得标记属性。有人知道我怎么才能拿到按钮吗?是否有在指定位置获取视图的功能?您可以使用UIView的子视图属性,并在每个子视图中循环检查所需的标记: class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa

我在swift中得到了一个简单的视图,并将9个按钮作为3x3网格放在上面,现在我需要每个按钮的标记,但不知道如何获得每个按钮,因此我可以使用for循环获得标记属性。有人知道我怎么才能拿到按钮吗?是否有在指定位置获取视图的功能?

您可以使用
UIView
子视图
属性,并在每个子视图中循环检查所需的
标记

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        for subview in view.subviews {
            if subview.tag == 1, let button = subview as? UIButton {
                print("Got the button I need.")
            }
        }

        if let button = view.viewWithTag(1) as? UIButton {
            print("Got the button I need.")
        }
    }
}

更新:您还可以使用
viewWithTag
在子视图中查找具有特定标记的视图。

您可以使用
UIView
子视图
属性,并在每个子视图中循环检查
标记
,您需要:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        for subview in view.subviews {
            if subview.tag == 1, let button = subview as? UIButton {
                print("Got the button I need.")
            }
        }

        if let button = view.viewWithTag(1) as? UIButton {
            print("Got the button I need.")
        }
    }
}

更新:您还可以使用
viewWithTag
在子视图中查找带有特定标记的视图。

弗兰肯斯坦对
的回答。子视图
工作正常,但使用内置函数
viewWithTag(:)

override func viewDidLoad(){
super.viewDidLoad()
// ...
//现在必须已将目标视图添加到子视图中
如果让taggedView=view.viewWithTag(1){
打印(“获得视图!”)
}
//你甚至可以尝试直接施放
如果让taggedButton=view.viewWithTag(1)作为?UIButton{
打印(“点击按钮!”)
}
//如果你坚持使用for循环,你可以这样使用它
让highestTag=10
对于0中的i…最高标记{
如果让taggedButton=view.viewWithTag(i)作为?UIButton{
//给你
}
}
}

对于这两种方法,请记住,您要查找的视图已预先添加为子视图,否则您将无法使用
搜索它弗兰肯斯坦的答案。子视图
工作正常,但您甚至可以使用内置函数
viewWithTag(:)
更快:

override func viewDidLoad(){
super.viewDidLoad()
// ...
//现在必须已将目标视图添加到子视图中
如果让taggedView=view.viewWithTag(1){
打印(“获得视图!”)
}
//你甚至可以尝试直接施放
如果让taggedButton=view.viewWithTag(1)作为?UIButton{
打印(“点击按钮!”)
}
//如果你坚持使用for循环,你可以这样使用它
让highestTag=10
对于0中的i…最高标记{
如果让taggedButton=view.viewWithTag(i)作为?UIButton{
//给你
}
}
}

对于这两种方法,请记住,您要查找的视图已预先添加为子视图,否则您将无法搜索它

每个视图都有一个可以使用的
标记
属性。每个视图都有一个可以使用的
标记
属性。