2009-07-23 4 views
1

사용자 정의 ViewController를 만들고 있습니다. 이 VC는 이벤트를 생성하는 이벤트에서 알려진 일부 데이터를로드해야하며 그 데이터의 일부가 될 NavigationController의 맨 위로 밀어 넣습니다.Cocoa Touch UIViewController 속성 및 클래스 디자인

제 질문은, 어떻게 사용자 정의 ViewController의 생성을 처리하는 뷰에서 해당 사용자 정의 ViewController로 데이터를 전달해야합니까입니다.

나는 4 가지 가능한 옵션을 생각해 보았으며 각각의 기능이 좋은지 아닌지에 대한 피드백을 받기를 희망했습니다.

1) 사용자 정의 ViewController의 공용 속성을 노출하고 - (void) ViewDidLoad의 속성을 기반으로보기에서 UI 요소를 설정합니다.

2) 실제 UI 요소 자체를 드러내고 ViewController가 생성 될 때 .text/.image /. 모든 속성을 설정하십시오.

3)로 CustomView 전에 데이터를 설정 커스텀 뷰 정의 생성자를 생성하고 I은 UI 요소

4

) 모두보기 액세스 권한이있는 사용자 정의 모델을 만들기를 설정하는 데 필요한 값을 전달 생성/푸시되고 ViewDidLoad 이벤트에서 해당 데이터에 액세스합니다.

저는이 모든 것을 처음 접했고, 이러한 데이터 교환의 적절한 처리를 이해하고 싶습니다. 이런 식으로 보이는 것은 아마 간단한 대답 일 것 같지만, 나는 아직도 약간 혼란스럽고 기억 상실/유출을 피하기 위해이 일을하는 것이 정말로 중요합니다.

또한 누군가가 신경 쓰는 경우 iTunes U에서 스탠포드의 CS193p 클래스를 사용하고 Mark/Lamarche의 "Beginning iPhone Development"를 사용하여 iPhone 용 코코아를 가르칩니다. NavigationController와 몇 개의 ViewControllers (193p에 익숙한 경우 현재 상태 1)를 사용하는 응용 프로그램에서 작업하고 있습니다.

답변

1

글쎄, 나는 당신의 요구 사항에 따라 각각의 방법에 대해 이점이 있다고 생각한다 ... 종종 어떤 접근법의 조합이 필요할 것이다. 나는 가장 일반적으로, 나를 위해 어쨌든, 당신이 시작하기에 충분할 정도로 그것을주는 것과 같은 것을하는 것입니다.

MyViewController *vc = [[MyViewController alloc] init]; // (or initWithNibName:bundle:) 
// transfer vc values here 
vc.value1 = aValue; 
vc.value2 = anotherValue; 
[self.navigationController pushViewController:vc animated:YES]; 
[vc release]; 

보기 컨트롤러가 인스턴스화 된 후에는 개체를 전달할 수 있습니다. MyViewController가 자세히보기라고하면 세부 정보를 표시 할 객체를 지정합니다. 또는 테이블 뷰인 경우 디스플레이에 필요한 NSArray를 제공 할 수 있습니다. 그런 다음 viewDidLoad 또는 awakeFromNib 또는 awakeFromCoder 또는 ...보기를 작성하여 말할 수 있습니다. (두 상호 배타적이지 않음) 또는 # 3없이

1

# 1

# 4 내 바람직한 해결책이 잘된다. (2) 좋은 생각이 아니다

User *user = [self.users objectAtIndex:someIndex]; 
UserViewController *uvc = [[[UserViewController alloc] initWithUser:user] autorelease]; 

# : 나는 UserViewController가 있다면 예를 들어, 나는 아마 또한 사용자 개체를 가지고 이런 식으로 만들고 싶습니다. 개체는 다른 개체의 UI 요소에 액세스하면 안됩니다. UI를 변경할 때 (그리고 그렇게 할 때) 많은 문제가 발생합니다.