1. 主页 > 大智慧

iOS开发必知:当登录页跳转首页时,5种传值方案如何选择?

<鍦烘櫙鍖栨灦鏋?gt;
鏈枃灏嗛€氳繃浠ヤ笅鐪熷疄寮€鍙戝満鏅紝鎷嗚В涓嶅悓浼犲€兼柟妗堢殑閫夊瀷绛栫暐锛?/p>

  1. 鐢ㄦ埛鐧诲綍鎴愬姛鍚庨渶鍚戦椤典紶閫掔敤鎴蜂俊鎭紙姝e悜浼犲€硷級
  2. 璁㈠崟纭椤佃繑鍥炰慨鏀规敹璐у湴鍧€锛堝弽鍚戜紶鍊硷級
  3. 鍏ㄥ眬鐢ㄦ埛鐘舵€佸彉鏇撮€氱煡澶氫釜椤甸潰锛堝箍鎾紶鍊硷級
  4. 澶嶆潅妯″潡闂寸殑鍙屽悜鏁版嵁浜や簰锛堢粍浠堕€氫俊锛?/li>
  5. 璺⊿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/>

本文由嘻道妙招独家原创,未经允许,严禁转载