第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Swift中的視圖控制器之間傳遞數(shù)據(jù)?

如何在Swift中的視圖控制器之間傳遞數(shù)據(jù)?

鴻蒙傳說 2019-08-28 10:32:44
如何在Swift中的視圖控制器之間傳遞數(shù)據(jù)?我嘗試在加載視圖時創(chuàng)建全局變量并更新信息但是沒有呈現(xiàn)數(shù)據(jù)。全球變量var viewName:String = ""var viewDuration:String = ""var viewPeriod:String = ""var viewMinAmp:String = ""var viewMaxAmp:String = ""var viewStep:String = ""var viewType:String = ""除了擁有全局變量之外,是否有更有效的方式傳遞信息?@IBOutlet var txtName: UITextField!@IBOutlet var txtDuration: UITextField!@IBOutlet var txtPeriod: UITextField!@IBOutlet var txtMinAmp: UITextField!@IBOutlet var txtMaxAmp: UITextField!@IBOutlet var txtStep: UITextField!@IBOutlet var txtType: UITextField!override func viewDidLoad() {    super.viewDidLoad()    // Do any additional setup after loading the view, typically from a nib.    setInfo(viewName, duration: viewDuration, period: viewPeriod, minAmp: viewMinAmp, maxAmp: viewMaxAmp, step: viewStep, type: viewType)}func setInfo(name: String, duration: String, period: String, minAmp: String, maxAmp: String, step: String, type: String) {    txtName.text = name    txtDuration.text = duration    txtPeriod.text = period    txtMinAmp.text = minAmp    txtMaxAmp.text = maxAmp    txtStep.text = step    txtType.text = type}
查看完整描述

3 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

對于Swift 3.0

final class Shared {
     static let shared = Shared() //lazy init, and it only runs once
     var stringValue : String!
     var boolValue   : Bool!}

設置 stringValue

Shared.shared.stringValue = "Hi there"

要得到 stringValue

 if let value = Shared.shared.stringValue {
        print(value)
 }

適用于低于3.0的Swift版本

您可以使用singleton類在視圖之間傳遞數(shù)據(jù)。這是簡單而有效的方式。這是我的ShareData.swift類

import Foundationclass ShareData {
    class var sharedInstance: ShareData {
        struct Static {
            static var instance: ShareData?
            static var token: dispatch_once_t = 0
        }

        dispatch_once(&Static.token) {
            Static.instance = ShareData()
        }

        return Static.instance!
    }


    var someString : String! //Some String
    var selectedTheme : AnyObject! //Some Object
    var someBoolValue : Bool!}

現(xiàn)在ViewControllerOne我可以設置上面的變量。

//Declare Class Variablelet shareData = ShareData.sharedInstanceoverride func viewDidLoad() {
    self.shareData.someString ="Some String Value"}

而在我ViewControllerTwo,我可以訪問someString

let shareData = ShareData.sharedInstanceoverride func viewDidLoad() {
    NSLog(self.sharedData.someString) // It will print Some String Value}


查看完整回答
反對 回復 2019-08-28
?
www說

TA貢獻1775條經(jīng)驗 獲得超8個贊

就個人而言,我更喜歡以下方式:

  • 如果你想在兩個視圖控制器(從A到B)之間向前跳轉(zhuǎn),如-pushViewController:animated:在導航中,你可以為Controller B定義一個模型的屬性并公開它,然后在從Controller跳轉(zhuǎn)之前顯式設置這個屬性A,這很簡單;

  • 如果您想從控制器B向后跳轉(zhuǎn)到A,請使用委托+協(xié)議模式??刂破鰾起草公共協(xié)議并擁有“委托”屬性,任何想要成為控制器B代表的對象都應遵守并實施其協(xié)議(可選)。然后在跳轉(zhuǎn)之前,控制器B使其代表執(zhí)行協(xié)議中列出的某些動作,數(shù)據(jù)可以這種方式傳輸;

  • 在某些情況下,您可能希望將數(shù)據(jù)從Controller(或控制器)傳輸?shù)狡渌鄠€控制器,如果是這種情況,請使用通知機制。

Apple在官方文檔中有關于委托模式,通知模式的詳細說明,請在XCode中查看,:)


查看完整回答
反對 回復 2019-08-28
  • 3 回答
  • 0 關注
  • 712 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號