먼저 작은 배경. 저는 iOS 개발에 익숙하지 않았습니다. 오랫동안 .NET 토지에 있었고 아마도이 질문을하는 이유 일 수도 있습니다. 그러나 여기에 있습니다.하나의보기 컨트롤러에서 다른보기 컨트롤러로 데이터 전달. iOS <= 4 대 iOS 5
기본 설정은 이것이다. UINavigationController
에 RootViewController
이 있고 MasterViewController
이라고합니다. 이 MasterViewController에서 어떤 동작이 발생하면 DetailsViewController
으로 드릴합니다. 그러나 일부 데이터를 DetailsViewController
에 전달하려고합니다. 그러나, 이제, 아이폰 OS 5, 그것은이 지금 할 것 같다
@implementation MasterViewController
-(IBAction)someAction
{
DetailsViewController *dvc = [[DetailsViewController alloc]initWithNibName:@"DetailsView" bundle:nil];
dvc.someDataProp = [self getSomeDataSomeHow];
[[self navigationController] pushViewController:dvc animated:YES];
}
@end
을 :
IT는 SDK의 이전 버전 (전에서 iOS 5에) 접근이에 비슷한 것을, 나의 이해이다 Storyboard와 segues를 사용합니다. 엑스 코드에서 당신은 DetailsViewController에 MasterViewController에서 SEGUE를 설정 한 다음 코드에서 당신이 뭔가를 할 :
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[segue.destinationViewController setSomeDataProp:[self getSomeDataSomeHow]];
}
내 질문은 기본적으로 이것이다 : 오래된 접근 방법은 어떻게 든 나에게 많은 청소기 느낀다. 네비게이션 스택으로 밀어 넣는 ViewController
의 유형에 대해 매우 명시 적으로 다루고 있으며 여기에 속성을 쉽게 설정할 수 있습니다. 그러나 새로운 접근 방식에서, destinationViewController
은 (분명한 이유) 타입 id
의, 그리고 그것은 단지 나에게 적은 깨끗한 많이 느낀다. 다시 말하지만, 이것은 .Net 사이드가 나올 수 있지만, iOS에서는 일반적입니다. 그냥 신분증을 사용하고 바람에주의를 기울이시겠습니까?
많은 존경. 나는 또한 비슷한 질문을했고 여기에 몇 가지 경험이있다. 나의 대답은 iOS5에서 UI 로직이 2) ViewController 라이프 사이클과 전환 2) 데이터 흐름으로 나뉘는 것을 볼 수있다.스토리 보드는 1을 처리하고 개발자는 2를 처리 할 것으로 예상됩니다. 이러한 시나리오에서 이러한 캐스트가 발생합니다. 나를 위해, 질문은,이 분할은 이해가 되는가? 이 두 개념을 분리 할 수 있습니까? 나는 애플이 그런 식으로 가고있는 것을 추측한다. 그리고 우리는 그것이 어떻게 작동하는지 알 것이다. – Guven