iOS開發(fā)——使用Segue在界面間雙向傳值


Segue

  • segue 就是這個玩意,兩個視圖控制器之間的連接器羽利,UIStoryboardSegue 的對象.
segue
  • segue屬性
    每一個 Segue 對象,都有3個屬性
// 唯一標識
@property (nonatomic, readonly) NSString *identifier;
// 來源控制器
@property (nonatomic, readonly) id sourceViewController;
// 目標控制器
@property (nonatomic, readonly) id destinationViewController;

前一個界面往后一個界面?zhèn)髦?/h2>

#1-> 了解一下下面這個函數(shù)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}

#2-> 演示步驟

  • 新建兩個類繼承 UIViewController娃闲,假設(shè)第一個界面關(guān)聯(lián)的類是 FirVC皇帮,第二個界面關(guān)聯(lián)的類是 SecVC.
  • 在 storyboard 里,分別在第一属拾、二個界面里拉一個 TextField 控件,并在各自的類中引出輸出口梯浪,這是為了演示第一個界面的值傳到第二個界面了.
@property (weak, nonatomic) IBOutlet UITextField *firstVCTF;
@property (weak, nonatomic) IBOutlet UITextField *secondVCTF;
  • 在第一個界面加一個 button,右鍵拖到第二個界面礼预,讓第一個界面調(diào)到 第二個界面.
  • SecVC.h 中聲明一個屬性保存第一個界面?zhèn)鱽淼闹?
@property (nonatomic) NSString *str;
  • 關(guān)鍵一步虏劲,在 FirVC.m 文件中重寫下面這個函數(shù)褒颈,函數(shù)中励堡,聲明一個 SecVC 對象 vc 指向第一個界面的下一個界面,將第一個界面對應(yīng)的值傳給第二個界面.
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    SecVC *vc = segue.destinationViewController;
    vc.str = self.firstVCTF.text;
    [super prepareForSegue:segue sender:sender];
}
  • 然后在 SecVC.m 文件中的 viewDidLoad 函數(shù)中刨疼,把 str 中保存的第一個界面的值賦值給 secondVCTF 讓第二個界面加載后把數(shù)據(jù)顯示出來.
self.secondVCTF.text = self.str;

#3-> 演示結(jié)果

第一個界面

點擊按鈕跳轉(zhuǎn)到第二個界面

第二個界面

后一個界面往前一個界面?zhèn)髦?/h2>
  • 逆向傳值一般都是使用代理實現(xiàn)的揩慕,由于有了 segue 使得正向傳值挺方便的扮休,我就在考慮能不能使得逆向傳值也能用 segue 來實現(xiàn),功夫不負有心人呀蜗搔,終于還是弄出來了八堡,還是比較有點小技巧的!
  • 之前提到 segue 是 UIStoryboardSegue 的對象不同,并且有3個屬性,這里就用到了
  • 主題思想就是把 sugue 也順帶傳給第二個界面二拐,在第二個界面里就能通過傳過來的 segue 獲得sourceViewController凳兵,即第一個界面視圖控制器,然后就可以將第二個界面的數(shù)據(jù)傳送給第一個界面了

#1-> 在第二個界面類文件添加屬性 retSegue 接受傳過來的 segue

@property (nonatomic) UIStoryboardSegue *retSegue;

#2-> 在第一個界面類文件中修改之前的 prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 函數(shù)

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    SecVC *vc = segue.destinationViewController;
    vc.str = self.firTF.text;
    vc.retSegue = segue;//第二個界面拿到segue
    [super prepareForSegue:segue sender:sender];
}

#3-> 在第二個界面類文件 viewDidDisappear 函數(shù)里把第二個界面的數(shù)據(jù)傳給第一個界面饭望,當然你也可以在其他合適的地方傳送數(shù)據(jù)

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:YES];
    FirVC *vc = self.retSegue.sourceViewController;  //拿到第一個界面視圖控制器
    vc.firstVCTF.text = self.secondVCTF.text;  //傳送數(shù)據(jù)到第一個界面
}

逆向傳值就在正向傳值的基礎(chǔ)上把segue傳過來以讓第二個界面可以獲得第一個界面視圖控制器铅辞,我這么做是行的通的,編譯器可以正常運行斟珊,結(jié)果也正確

#4-> 演示結(jié)果

第二個界面

點擊左上角的箭頭返回第一個界面囤踩,可以看到旨椒,第一個界面的 textfield 內(nèi)容跟著改變了

第一個界面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末综慎,一起剝皮案震驚了整個濱河市示惊,隨后出現(xiàn)的幾起案子埃元,更是在濱河造成了極大的恐慌,老刑警劉巖岛杀,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类嗤,死亡現(xiàn)場離奇詭異遗锣,居然都是意外死亡,警方通過查閱死者的電腦和手機精偿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門笔咽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叶组,你說我怎么就攤上這事历造。” “怎么了吭产?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵臣淤,是天一觀的道長。 經(jīng)常有香客問我荒典,道長吞鸭,這世上最難降的妖魔是什么刻剥? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任滩字,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夜涕。我一直安慰自己享钞,他們只是感情好栗竖,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布渠啤。 她就那樣靜靜地躺著,像睡著了一般沥曹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僵腺,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天部脚,我揣著相機與錄音,去河邊找鬼丧没。 笑死,一個胖子當著我的面吹牛呕童,可吹牛的內(nèi)容都是我干的淆珊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼往声,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浩销?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤塘雳,失蹤者是張志新(化名)和其女友劉穎普筹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妻顶,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡蜒车,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崭添。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棘伴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焊夸,我是刑警寧澤蓝角,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站揪阶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲁僚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一侨艾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唠梨,春花似錦、人聲如沸姻成。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽才睹。三九已至,卻和暖如春琅攘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坞琴。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工逗抑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人邮府。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓褂傀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仙辟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容