recherche

Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours407

répondre à tous(4)je répondrai

  • 怪我咯

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

    Cette méthode crée un nouvel objet vc de la classe UIViewController
    Il n'y a aucune opération pour créer un nouveau VC ici, il n'y a pas d'allocation de mémoire.

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

    Ce code est exactement le même que celui ci-dessous

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

    Bien sûr, il n'est pas nécessaire de revenir.

    répondre
    0
  • PHP中文网

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

    Si vous n'utilisez pas segue pour générer un vc à partir de sb, c'est probablement comme ça

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

    Lorsque Segue appelle destinationViewController, il fait en fait la même chose. Il génère un vc à partir de sb et vous le renvoie
    Ce vc est le même que celui que vous avez généré vous-même
    {

    vc.title = @"your title";
    ...

    }

    present or push vc by segue

    répondre
    0
  • PHP中文网

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

    VC n'est pas nouvellement créé, c'est juste un pointeur vers le contrôleur de vue cible, qui est le contrôleur de vue à sauter

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:15:14

    • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender Cette méthode est appelée lors du changement d'interface. À ce stade, segue contient déjà l'interface à laquelle vous souhaitez accéder, pas Created. à ce moment. Le storyboard créera l'objet viewController souhaité et le donnera à la séquence.

    UIViewController *vc = segue.destinationViewController;
    vc.title = [NSString stringWithFormat:@"%@'s contact list",_accountField.text];
    Ces deux lignes de code sont les objectifs de votre segue VC a été supprimé et son titre a été modifié.
    Le point clé est de comprendre que le VC cible vers lequel vous allez est construit par storybard, pas quelque chose que vous créez puis retournez.

    répondre
    0
  • Annulerrépondre