Saturday, October 14, 2023
HomeiOS DevelopmentUniquely figuring out views - The.Swift.Dev.

Uniquely figuring out views – The.Swift.Dev.


First strategy: accessibility to the rescue!

Lengthy story brief, I used to be fairly uninterested in tagging views with silly quantity values, so I seemed for a greater various resolution to repair my drawback. Because it turned out, there’s a property known 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 establish any view object within the view hierarchy. It is fairly a pleasant resolution, now I can title my views in a very nice method. As a free of charge storing the title below the accessibilityIdentifier will profit your UI exams. 😉

Second strategy: utilizing enums

The primary concept is to have an Int primarily based enum for each view identifier, so principally you should use the tag property to retailer the enum’s rawValue. It is 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)
    }
}

Truthfully I simply got here up with the second strategy proper after I copy & pasted the primary snippet to this text, however what the heck, perhaps another person will prefer it. 😂

When you have a greater resolution for this drawback, be happy to share it by means of twitter. Oh, by the way in which, remember to subscribe to my month-to-month e-newsletter beneath.





Supply hyperlink

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments