찾다

 >  Q&A  >  본문

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일 전403

모든 응답(4)나는 대답할 것이다

  • 怪我咯

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

    이 메서드는 UIViewController 클래스의 새 객체 vc를 생성합니다.
    여기에서는 새 VC를 생성하는 작업이 없으며 메모리 할당도 없습니다.

    으아악

    아래 코드와 완전히 동일한 코드입니다

    으아악

    물론 돌아올 필요는 없습니다.

    회신하다
    0
  • PHP中文网

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

    sb에서 vc를 생성하기 위해 segue를 사용하지 않으면 아마도 이렇습니다

    으아악

    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 이 메소드는 인터페이스 전환 시 호출됩니다. 이때 segue에는 이동하려는 인터페이스가 이미 포함되어 있습니다. 이 시간에. 스토리보드는 원하는 viewController 객체를 생성하여 segue에 제공합니다.

    UIViewController *vc = segue.destinationViewController;
    vc.title = [NSString stringWithFormat:@"%@'s contact list",_accountField.text];
    이 두 줄의 코드는 귀하의 목표입니다. segue VC가 제거되고 제목이 수정되었습니다.
    핵심은 자신이 만들고 반환하는 것이 아니라 스토리바드를 통해 구축하려는 대상 VC라는 점을 이해하는 것입니다.

    회신하다
    0
  • 취소회신하다