खोज…


कोड पुनरावृत्ति से बचने के लिए ट्यूपल्स पर सेट करें

एक लाइनर के साथ चर का एक समूह सेट करके निर्माणकर्ताओं में कोड पुनरावृत्ति से बचें:

class Contact: UIView
{
    private var message: UILabel
    private var phone: UITextView
    
    required init?(coder aDecoder: NSCoder) {
        (message, phone) = self.dynamicType.setUp()
        super.init(coder: aDecoder)
    }
    
    override func awakeFromNib() {
        (message, phone) = self.dynamicType.setUp()
        super.awakeFromNib()
    }
    
    override init(frame: CGRect) {
        (message, phone) = self.dynamicType.setUp()
        super.init(frame: frame)
    }
    
    private static func setUp(){
        let message = UILabel()  // ...
        let phone = UITextView() // ...
        return (message, phone)
    }
}

प्रारंभिक स्थिरांक के साथ प्रारंभ करें

let mySwitch: UISwitch = {
    view.addSubview($0)
    $0.addTarget(self, action: "action", forControlEvents: .TouchUpInside)
    return $0
}(UISwitch())

डीटसेट में प्रारंभिक विशेषताएँ

@IBOutlet weak var title: UILabel! {
  didSet {
    label.textColor = UIColor.redColor()
    label.font = UIFont.systemFontOfSize(20)
    label.backgroundColor = UIColor.blueColor()
  }
}

यह भी संभव है कि दोनों एक मूल्य निर्धारित करें और इसे आरंभ करें:

private var loginButton = UIButton() {
    didSet(oldValue) {
        loginButton.addTarget(self, action: #selector(LoginController.didClickLogin), forControlEvents: .TouchUpInside)
    }
}

एक कस्टम NSObject में समूह आउटलेट

हर आउटलेट को एक NSObject में ले जाएं। फिर एक ऑब्जेक्ट को लाइब्रेरी से स्टोरीबोर्ड के नियंत्रक दृश्य में खींचें और वहां तत्वों को हुक करें।

class ContactFormStyle: NSObject 
{
    @IBOutlet private weak var message: UILabel! {
      didSet {
        message.font = UIFont.systemFontOfSize(12)
        message.textColor = UIColor.blackColor()
      }
    }
}

class ContactFormVC: UIViewController 
{
    @IBOutlet private var style: ContactFormStyle!
}

तब तक साथ दें

यह सिंटैक्स में उदाहरण के समान है जो स्थिति स्थिरांक का उपयोग करके आरंभ करता है, लेकिन https://github.com/devxoul/Then (नीचे संलग्न) से Then एक्सटेंशन की आवश्यकता होती है।

let label = UILabel().then {
    $0.textAlignment = .Center
    $0.textColor = UIColor.blackColor(
    $0.text = "Hello, World!"
}

Then विस्तार:

import Foundation

public protocol Then {}

extension Then 
{
    public func then(@noescape block: inout Self -> Void) -> Self {
        var copy = self
        block(&copy)
        return copy
    }
}

extension NSObject: Then {}

ब्लॉक के साथ फैक्टरी विधि

internal func Init<Type>(value : Type, block: @noescape (object: Type) -> Void) -> Type
{
    block(object: value)
    return value
}

उपयोग:

Init(UILabel(frame: CGRect.zero)) {
    $0.backgroundColor = UIColor.blackColor()
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow