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

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

大家讲道理
大家讲道理

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

모든 응답(4)
刘奇

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

으아악

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

으아악

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

洪涛

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

으아악

segue가 DestinationViewController를 호출하면 실제로 동일한 작업을 수행합니다. sb에서 vc를 생성하여 사용자에게 반환합니다.
이 vc는 사용자가 직접 생성한 것과 동일합니다.
{

으아악

}

으아악
洪涛

VC는 새로 생성되지 않으며 점프할 뷰 컨트롤러인 대상 뷰 컨트롤러에 대한 포인터일 뿐입니다

左手右手慢动作
  • (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라는 점을 이해하는 것입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿