iOS开发必知:当登录页跳转首页时,5种传值方案如何选择?
<鍦烘櫙鍖栨灦鏋?gt;
鏈枃灏嗛€氳繃浠ヤ笅鐪熷疄寮€鍙戝満鏅紝鎷嗚В涓嶅悓浼犲€兼柟妗堢殑閫夊瀷绛栫暐锛?/p>
- 鐢ㄦ埛鐧诲綍鎴愬姛鍚庨渶鍚戦椤典紶閫掔敤鎴蜂俊鎭紙姝e悜浼犲€硷級
- 璁㈠崟纭椤佃繑鍥炰慨鏀规敹璐у湴鍧€锛堝弽鍚戜紶鍊硷級
- 鍏ㄥ眬鐢ㄦ埛鐘舵€佸彉鏇撮€氱煡澶氫釜椤甸潰锛堝箍鎾紶鍊硷級
- 澶嶆潅妯″潡闂寸殑鍙屽悜鏁版嵁浜や簰锛堢粍浠堕€氫俊锛?/li>
- 璺⊿toryboard椤甸潰鍙傛暟浼犻€掞紙澶氳浇浣撲紶鍊硷級
涓€銆佸睘鎬т紶鍊硷細鐩存帴绠€鍗曠殑姝e悜浼犻€?/h3>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細鐢ㄦ埛鐧诲綍鎴愬姛鍚庤烦杞椤碉紝闇€浼犻€掔敤鎴峰悕鍜屼細鍛樼瓑绾?/p>
swift澶嶅埗// LoginViewController.swift func loginSuccess() { let homeVC = HomeViewController() homeVC.userName = "iOS_Dev" homeVC.memberLevel = .vip navigationController?.pushViewController(homeVC, animated: true) }
鉁?浼樺娍锛氫唬鐮佺洿瑙傦紝閫傜敤浜庡崟鍚戞暟鎹紶閫?br/> 鈿狅笍 闄烽槺锛氬己鑰﹀悎鍙兘寮曞彂寰幆寮曠敤锛岄渶娉ㄦ剰鍐呭瓨绠$悊
浜屻€侀棴鍖呭洖璋冿細寮傛鎿嶄綔鐨勯粍閲戞惌妗?/h3>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細璁㈠崟纭椤佃繑鍥炰慨鏀规敹璐у湴鍧€
swift澶嶅埗// OrderConfirmVC.swift var addressUpdateHandler: ((String) -> Void)? @objc func modifyAddress() { let addressVC = AddressSelectorVC() addressVC.onAddressSelected = { [weak self] newAddress in self?.currentAddressLabel.text = newAddress self?.addressUpdateHandler?(newAddress) } present(addressVC, animated: true) }
馃敟 瀹炴垬鎶€宸э細浣跨敤[weak self]閬垮厤寰幆寮曠敤锛岄€傚悎闇€瑕佸洖璋冨弬鏁扮殑鍦烘櫙
涓夈€佷唬鐞嗘ā寮忥細澶嶆潅浜や簰鐨勬爣鍑嗚В娉?/h3>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細璁剧疆椤典笌瀛愰〉闈㈠弻鍚戞暟鎹氦浜?/p>
swift澶嶅埗protocol SettingsDelegate: AnyObject { func didUpdateFontSize(_ size: CGFloat) func didToggleDarkMode(_ isEnabled: Bool) } class FontSettingVC: UIViewController { weak var delegate: SettingsDelegate? @objc func sliderValueChanged(slider: UISlider) { delegate?.didUpdateFontSize(CGFloat(slider.value)) } }
馃挕 璁捐寤鸿锛氶伒寰崟涓€鑱岃矗鍘熷垯锛岄€傚悎澶氬弬鏁?澶氭柟娉曠殑澶嶆潅鍗忚
鍥涖€侀€氱煡涓績锛氬叏灞€骞挎挱鐨勬渶浣虫媿妗?/h3>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細鐢ㄦ埛鍒囨崲涓婚闇€瑕侀€氱煡鎵€鏈夐〉闈?/p>
swift澶嶅埗// 涓婚绠$悊涓績 NotificationCenter.default.post( name: .themeChanged, object: nil, userInfo: ["themeColor": UIColor.systemIndigo] ) // 鍚勯〉闈㈢洃鍚?/span> NotificationCenter.default.addObserver( self, selector: #selector(updateTheme(_:)), name: .themeChanged, object: nil )
馃毃 娉ㄦ剰浜嬮」锛氬姟蹇呭湪deinit涓Щ闄よ瀵熻€咃紝閬垮厤鍍靛案瀵硅薄
浜斻€佸崟渚嬫ā寮忥細鍏ㄥ眬鐘舵€佸叡浜灑绾?/h3>
鈥?strong>鈥嬪満鏅€?/strong>鈥嬶細璐墿杞︽暟鎹法澶氶〉闈㈠悓姝?/p>
swift澶嶅埗class CartManager { static let shared = CartManager() private init() {} var items: [CartItem] = [] var totalPrice: Double { return items.reduce(0) { $0 + $1.price } } } // 鍟嗗搧璇︽儏椤?/span> CartManager.shared.items.append(newItem) // 璐墿杞﹂〉 func reloadCart() { tableView.reloadData() totalLabel.text = "楼\(CartManager.shared.totalPrice)" }
鈿★笍 鎬ц兘浼樺寲锛氬缓璁厤鍚圕ombine妗嗘灦瀹炵幇鍝嶅簲寮忔洿鏂?/p>
<鍦烘櫙閫夋嫨鍐崇瓥鏍?gt;
1锔忊儯 鏄惁闇€瑕佸弽鍚戜紶鍊硷紵 鈫?閫夐棴鍖?浠g悊
2锔忊儯 鏄惁璺ㄨ秺澶氬眰绾э紵 鈫?閫夐€氱煡涓績
3锔忊儯 鏄惁鍏ㄥ眬鍏变韩鏁版嵁锛?鈫?閫夊崟渚嬫ā寮?br/>
4锔忊儯 鏄惁绠€鍗曟鍚戜紶閫掞紵 鈫?閫夊睘鎬т紶鍊?br/>
5锔忊儯 鏄惁娑夊強澶嶆潅涓氬姟閫昏緫锛?鈫?閫変唬鐞嗘ā寮?br/>
<瀹炴垬鎬荤粨>
褰撻亣鍒?椤甸潰闂撮渶瑕佷紶閫扻X绫诲瀷鏁版嵁"鐨勯渶姹傛椂锛?/p>
- 浼樺厛璇勪及浼犲€兼柟鍚戝拰鐢熷懡鍛ㄦ湡
- 娆¤€冭檻缁勪欢闂寸殑鑰﹀悎搴﹁姹?/li>
- 鏈€鍚庨獙璇佸唴瀛樼鐞嗗畨鍏ㄦ€?br/> 閬垮厤闄峰叆"鎶€鏈柟妗堝厛琛?鐨勬€濈淮闄烽槺锛屽缁堜粠涓氬姟鍦烘櫙鍑哄彂閫夋嫨鏈€鍚堥€傜殑浼犲€兼柟妗?br/>
本文由嘻道妙招独家原创,未经允许,严禁转载