objective-c - iOS利用segue顺传的实现原理问题
大家讲道理
大家讲道理 2017-04-18 09:13:14
0
4
401

在iOS简单通讯录的教程中,从登录界面到通讯录联系人界面的数据顺传部分的方法如下,根据不同的登录用户名,变换通讯录联系人界面的标题:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  UIViewController *vc = segue.destinationViewController;
  vc.title = [NSString stringWithFormat:@"%@的联系人列表",_accountField.text];
}

我的理解是:这个方法新建了一个UIViewController类的对象vc,并把seguedestinationViewController赋值给了vc,然后改变了vc对象的title,最后也没有返回vc,和destinationViewControllertitle应该没有关系啊?为什么这样写是正确的呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(4)
刘奇

Kaedah ini mencipta vc objek baharu kelas UIViewController
Tiada operasi untuk mencipta VC baharu di sini, tiada peruntukan memori.

UIViewController *vc = segue.destinationViewController;
vc.title = [NSString stringWithFormat:@"%@的联系人列表",_accountField.text];

Kod ini betul-betul sama dengan yang di bawah

segue.destinationViewController.title = [NSString stringWithFormat:@"%@的联系人列表",_accountField.text];

Sudah tentu tidak perlu kembali.

洪涛

Jika anda tidak menggunakan segue untuk menjana vc daripada sb, mungkin begini

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"your sb name" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"your vc identifier"];
vc.title = @"your title";
...
present or push vc

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.title = @"your title";
...

}

present or push vc by segue
洪涛

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan