Last active
March 17, 2024 13:10
-
-
Save bwhiteley/049e4bede49e71a6d2e2 to your computer and use it in GitHub Desktop.
Initialize Swift subclass of UIView, designed in .xib
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create CustomView.xib, set File's Owner to CustomView. | |
// Link the top level view in the XIB to the contentView outlet. | |
class CustomView : UIView { | |
@IBOutlet private var contentView:UIView? | |
// other outlets | |
override init(frame: CGRect) { // for using CustomView in code | |
super.init(frame: frame) | |
self.commonInit() | |
} | |
required init?(coder aDecoder: NSCoder) { // for using CustomView in IB | |
super.init(coder: aDecoder) | |
self.commonInit() | |
} | |
private func commonInit() { | |
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil) | |
guard let content = contentView else { return } | |
content.frame = self.bounds | |
content.autoresizingMask = [.flexibleHeight, .flexibleWidth] | |
self.addSubview(content) | |
} | |
} |
Hi all
I need to send extra two parameters in CustomView class from the viewcontroller class , How this is possible.
I think we are on the same page, I want to create a custom view with IBOutlets. And I want to create it in such a way that it can directly use in storyboard. But it seems to impossible, when init with coder initialise a view, the IBOutlets are nil. If I use a different method using files owner , awake from nib will never execute, here. The sad part is that, the dilemma is to just load a view to screen. Anyone have a comment?
https://gist.github.com/bwhiteley/049e4bede49e71a6d2e2#gistcomment-2037515
work fine...completly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thanks for the code