cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - iOS利用segue顺传的实现原理问题

在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应该没有关系啊?为什么这样写是正确的呢?

大家讲道理大家讲道理2892 hari yang lalu408

membalas semua(4)saya akan balas

  • 怪我咯

    怪我咯2017-04-18 09:15:14

    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.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:15:14

    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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:15:14

    VC bukan baru dibuat, ia hanya penunjuk kepada pengawal pandang sasaran, iaitu pengawal pandang yang hendak dilompat

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:15:14

    • (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.

    balas
    0
  • Batalbalas