๋ฐ์ํ
๐ ๋ชฉ๋ก
์ ํํ๋ ํ๋ฉด์ data ๋ฃ๊ธฐ
๋์์ค๋ ํ๋ฉด์ data ๋ฃ๊ธฐ
๐ ์ ํํ๋ ํ๋ฉด์ data ๋ฃ๊ธฐ
์ฝ๋๋ก push ํน์ present๋ฅผ ํ์์๋
๋จผ์ ์ ํ๋ ํ๋ฉด์ ๋ฃ์ด์ค data๋ฅผ ์ ์ธ์ ํด์ค๋๋ค.
class CodePresentViewController: UIViewController { @IBOutlet weak var nameLabel: UILabel! var name:String? override func viewDidLoad() { super.viewDidLoad() if let name = name { // ํ๋ฉด์์ ํ์ธํ๊ธฐ ์ํด nameLabel์ text๋ฅผ ๋ฃ์ด์ค๋๋ค. self.nameLabel.text = name self.nameLabel.sizeToFit() } } }
์ด์ ์ ํํ๋ ํ๋ฉด์์ ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
class ViewController: UIViewController, SendDataDelegate { @IBAction func tabCodePushButton(_ sender: UIButton) { guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "CodePushViewController") as? CodePushViewController /* down casting */ else { return } viewController.name = "Eddie" // ์ฌ๊ธฐ์ ์ด๋ ๊ฒ ๋ฃ์ด์ค๋๋ค. self.navigationController?.pushViewController(viewController, animated: true) } }
์คํ ๋ฆฌ๋ณด๋๋ก push ํน์ persent๋ฅผ ํ์์๋
์์์์ ๊ฐ์ด ์ผ๋จ ๋ฃ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ธ์ ํด์ค๋๋ค.
class SeguePushViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
var name:String?
override func viewDidLoad() {
super.viewDidLoad()
print("segue push: viewDidLoad")
if let name = name {
self.nameLabel.text = name
self.nameLabel.sizeToFit()
}
}
}
์ด์ ์ ํํ๋ ํ๋ฉด์์ prepare๋ฅผ ์ ์ธ์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
class ViewController: UIViewController, SendDataDelegate {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let viewController = segue.destination as? SeguePushViewController {
viewController.name = "Eddie"
}
}
}
๐ ๋์์ค๋ ํ๋ฉด์ data ๋ฃ๊ธฐ
์ฌ๊ธฐ์๋ delegate ํจํด์ ์ด์ฉํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ ๋์๊ฐ๊ธฐ์ ์ ํ๋ฉด์์ protocol์ ์ ์ธ์ ํด์ค๋๋ค.
protocol SendDataDelegate: AnyObject {
func sendData(name: String)
}
๊ทธ๋ฆฌ๊ณ delgate๋ฅผ ํ๋กํผํฐ์ ์ ์ธํฉ๋๋ค.
class CodePresentViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
var name: String?
weak var delegate: SendDataDelegate?
}
๊ทธ๋ฐ๋ค์ ๋์๊ฐ ํ๋ฉด์์ ์ด๋ ๊ฒ ์ ์ธ์ ํด์ค๋๋ค.
class ViewController: UIViewController, SendDataDelegate { // delgate๋ฅผ ์์ ๋ฐ์ต๋๋ค.
func sendData(name: String) { // ์ฌ์ ์๋ฅผ ํด์ค๋๋ค.
self.nameLabel.text = name
self.nameLabel.sizeToFit()
}
}
๋ฐ์ํ
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Swift - ViewController life cycle (0) | 2021.12.07 |
---|---|
Swift - Navigator Push Present (0) | 2021.12.07 |
Swift - Content Hugging, compression Resistance (0) | 2021.12.06 |
Swift ๊ณ ์ฐจํจ์(map, filter, reduce) (0) | 2021.11.28 |
Swift closure (0) | 2021.11.28 |