HomeiOS DevelopmentUniquely figuring out views - The.Swift.Dev.

Uniquely figuring out views – The.Swift.Dev.



· 1 min learn


Discover ways to use string based mostly UIView identifiers as a substitute of tags. If you’re uninterested in tagging views, take a look at these various 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 seemed for a greater various answer to repair my downside. 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 answer, now I can identify my views in a very nice manner. As a free of charge storing the identify below the accessibilityIdentifier will profit your UI exams. 😉

Second strategy: utilizing enums

The principle thought is to have an Int based mostly 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. 😂

When you’ve got a greater answer for this downside, be happy to share it with me.

Associated posts


· 6 min learn


On this nice iOS Auto Structure tutorial I am going to train you the way to help rotation, use constraints, work with layers, animate nook radius.


· 2 min learn


Be taught in regards to the initialization means of the 2 well-known courses in UIKit. Say hiya to UIViewcontroller, and UIView init patterns.


· 5 min learn


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


· 3 min learn


Discover ways to sync information and knowledge by a shared iCloud drive folder utilizing the newest model of Swift programming language.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments