在iOS简单通讯录的教程中,从登录界面到通讯录联系人界面的数据顺传部分的方法如下,根据不同的登录用户名,变换通讯录联系人界面的标题:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
UIViewController *vc = segue.destinationViewController;
vc.title = [NSString stringWithFormat:@"%@的联系人列表",_accountField.text];
}
我的理解是:这个方法新建了一个UIViewController
类的对象vc
,并把segue
的destinationViewController
赋值给了vc
,然后改变了vc
对象的title
,最后也没有返回vc
,和destinationViewController
的title
应该没有关系啊?为什么这样写是正确的呢?
Kaedah ini mencipta vc objek baharu kelas UIViewController
Tiada operasi untuk mencipta VC baharu di sini, tiada peruntukan memori.
Kod ini betul-betul sama dengan yang di bawah
Sudah tentu tidak perlu kembali.
Jika anda tidak menggunakan segue untuk menjana vc daripada sb, mungkin begini
Apabila segue memanggil destinationViewController, ia sebenarnya melakukan perkara yang sama Ia menjana vc daripada sb dan mengembalikannya kepada anda
.Vc ini adalah sama seperti yang anda hasilkan sendiri
{
}
VC bukan baru dibuat, ia hanya penunjuk kepada pengawal pandang sasaran, iaitu pengawal pandang yang hendak dilompat
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender Kaedah ini dipanggil semasa menukar antara muka Pada masa ini, segue sudah mengandungi antara muka yang anda ingin pergi, bukan Created pada masa ini. Papan cerita akan mencipta objek viewController yang anda mahu dan memberikannya kepada segue.
UIViewController *vc = segue.destinationViewController;
vc.title = [NSString stringWithFormat:@"%@'s contact list",_accountField.text];
Dua baris kod ini ialah matlamat anda segue VC telah dikeluarkan dan tajuknya telah diubah suai.
Perkara utama ialah memahami bahawa sasaran VC yang anda akan lakukan dibina oleh bar cerita, bukan sesuatu yang anda cipta dan kemudian kembali.