開發(fā)中經(jīng)常使用到頁面間的傳值共郭!所以,今天特意寫一篇文章來分享給大家侦香!有經(jīng)驗(yàn)的可以跳過哈落塑!
下面設(shè)置 ViewController 和 ViewController2 兩個類。
類.png
正向傳值 :--->直接設(shè)置子viewController2的屬性 罐韩。頁面從A跳到B 憾赁, 參數(shù)也是從A傳到B。
傳遞方式:---->需要從A傳到B什么參數(shù)散吵,就給B設(shè)置一個什么屬性龙考,在A中將B的對象創(chuàng)建出來的時候給B的對象的屬性賦值蟆肆,在B頁面上 通過self的指針去獲取傳過來的參數(shù)
- 設(shè)置一個新聞 id。
1.png
2.png
在ViewController 里賦值(傳參)晦款。其實(shí)@"正向傳值(參)炎功,新聞ID";-->是可以用 參數(shù)代替的!(就像新聞列表缓溅,點(diǎn)擊某cell蛇损,就把對應(yīng)的參數(shù)比如ID傳過去,然后另個界面根據(jù)傳入的ID值坛怪,進(jìn)行網(wǎng)絡(luò)請求淤齐,得到對應(yīng)的新聞內(nèi)容!顯示在界面M嗄洹)
2.png
正向傳參數(shù).png
2更啄、 反向傳值(傳參)?---使用代理
頁面從B跳到A 參數(shù)也是從B傳到A居灯。
傳遞方式:---->需要從B傳到A什么參數(shù)祭务,就給A設(shè)置一個什么屬性,在B中設(shè)置代理怪嫌,然后义锥,在A中將B對象創(chuàng)建出來的時候,讓A 成為 B的代理喇勋。
代理.png
- 其中的self 是ViewControl 缨该,VC2 是 ViewControl2偎行,因?yàn)榇ū常瑂elf 的作用是指向當(dāng)前對象!蛤袒,所以熄云,這里把ViewControl 的值賦給了,VC2.delegate,相當(dāng)于妙真,ViewControl類了缴允。
- 最后,在B 中用:self.delegate.label.text = @"反向傳參"; ==》等價于ViewControl.label.text = @"反向傳參";
- 注意:實(shí)際開發(fā)中的參數(shù)--》@"反向傳參" ---是不能這樣寫死的珍德!,要用一個靈活的變量去代替的练般。
反向傳參.png
- label 是 ViewControl 的屬性。 這里的 self.delegate 就變成了ViewControl锈候。
3薄料、單例傳值? -- 場景:用戶登陸、購物
先創(chuàng)建一個單例類泵琳!-- UserInfo
創(chuàng)建一個類摄职,和屬性.png
- 實(shí)現(xiàn):
實(shí)現(xiàn).png
在登陸界面 獲取用戶名和密碼:
創(chuàng)建單例對象誊役,并賦值.png
在另一個界面,直接創(chuàng)建對象谷市,直接獲取值蛔垢,不用重新賦值了:
直接獲取值.png
- 通知也是可以傳值的!
- 通知傳值也是可以的迫悠,而且很好用鹏漆,主要是后面的那個字典,存放參數(shù)而已创泄。雖然開發(fā)中經(jīng)常使用甫男,當(dāng)是經(jīng)常會被濫用!