検索

ホームページ  >  に質問  >  本文

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日前405

全員に返信(4)返信します

  • 怪我咯

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

    このメソッドは、UIViewController クラスの新しいオブジェクト VC を作成します
    ここでは新しい VC を作成する操作はなく、メモリ割り当てもありません。

    リーリー

    このコードは以下のコードとまったく同じです

    リーリー

    もちろん返す必要はありません。

    返事
    0
  • PHP中文网

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

    sb から vc を生成するのにセグエを使用しない場合は、おそらく次のようになります

    リーリー

    segue が destinationViewController を呼び出すと、実際には同じことを行います。sb から vc を生成し、それを返します。
    この vc は、自分で生成したものと同じです。
    {

    リーリー

    }

    リーリー

    返事
    0
  • PHP中文网

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

    VC は新しく作成されたものではなく、ジャンプされるビューコントローラーであるターゲット ビューコントローラーへの単なるポインターです

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 09:15:14

    • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender このメソッドはインターフェイスを切り替えるときに呼び出されます。この時点で、セグエには、Created ではなく、すでに移動先のインターフェイスが含まれています。現時点では。ストーリーボードは必要な viewController オブジェクトを作成し、それをセグエに渡します。

    UIViewController *vc = segue.destinationViewController;
    vc.title = [NSString stringWithFormat:@"%@ の連絡先リスト",_accountField.text];
    これら 2 行のコードが目的です。 segue VC が削除され、タイトルが変更されました。
    重要な点は、これからアクセスしようとしているターゲット VC は、作成して返すものではなく、storybard によって構築されるものであることを理解することです。

    返事
    0
  • キャンセル返事