Wednesday, March 4, 2026
HomeiOS DevelopmentUniquely figuring out views - The.Swift.Dev.

Uniquely figuring out views – The.Swift.Dev.



ยท 1 min learn


Learn to use string primarily based UIView identifiers as a substitute of tags. In case you are uninterested in tagging views, try these different options.

First strategy: accessibility to the rescue!

Lengthy story quick, I used to be fairly uninterested in tagging views with silly quantity values, so I regarded for a greater different resolution to repair my drawback. Because it turned out, there’s a property referred to as accessibilityIdentifier that may do the job.

extension UIView {

    var id: String? {
        get {
            return self.accessibilityIdentifier
        }
        set {
            self.accessibilityIdentifier = newValue
        }
    }

    func view(withId id: String) -> UIView? {
        if self.id == id {
            return self
        }
        for view in self.subviews {
            if let view = view.view(withId: id) {
                return view
            }
        }
        return nil
    }
}

I made a easy extension across the UIView class, so now I can use a correct string worth to uniquely determine any view object within the view hierarchy. Itโ€™s fairly a pleasant resolution, now I can identify my views in a very nice approach. As a free of charge storing the identify beneath the accessibilityIdentifier will profit your UI exams. ๐Ÿ˜‰

Second strategy: utilizing enums

The principle concept is to have an Int primarily based enum for each view identifier, so mainly you should use the tag property to retailer the enumโ€™s rawValue. Itโ€™s nonetheless not so good because the one above, but it surelyโ€™s far more protected than counting on pure integers. ๐Ÿ˜ฌ

enum ViewIdentifier: Int {
    case submitButton
}

extension UIView {

    var identifier: ViewIdentifier? {
        set {
            if let worth = newValue {
                self.tag = worth.rawValue
            }
        }
        get {
            return ViewIdentifier(rawValue: self.tag)
        }
    }

    func view(withId id: ViewIdentifier) -> UIView? {
        return self.viewWithTag(id.rawValue)
    }
}

Actually I simply got here up with the second strategy proper after I copy & pasted the primary snippet to this text, however what the heck, possibly another person will prefer it. ๐Ÿ˜‚

If in case you have a greater resolution for this drawback, be happy to share it with me.

Associated posts


On this article I’ve gathered my high 10 favourite trendy UIKit suggestions that I might positively wish to know earlier than I begin my subsequent undertaking.


Learn to construct advanced kinds with my up to date assortment view view-model framework with out the battle utilizing Swift.


Do you wish to discover ways to load a xib file to create a customized view object? Properly, this UIKit tutorial is only for you written in Swift.


Just a bit recommendation about creating customized view programmatically and the reality about why kind constructing with assortment views sucks.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments