내 문제에 대한 더 나은 해결책을 찾을 수 없습니다. 요소 목록을 제공하는 뷰 컨트롤러가 있습니다. 이러한 요소는 B, C, D 등의 인스턴스가 될 수 있고 A에서 상속 할 수있는 모델입니다. 따라서 해당보기 컨트롤러에서 각 항목은 응용 프로그램의 다른 화면으로 이동하여 사용자가 그 중 하나를 선택하면 일부 데이터를 전달해야합니다. . 내 마음에 오는 두 가지 대안은 다음과 같습니다 (구문을 무시하십시오. 특정 언어는 아닙니다)
1) 스위치 (나는 짜증나는 것을 안다)
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
switch(a.type) {
case b:
B b = (B)a;
go to screen X;
x.v1 = b.v1; // fill X with b data
x.v2 = b.v2;
case c:
go to screen Y;
etc...
}
}
2) 다형성
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
Screen s = new (a.getDestinationScreen()); //ignore the syntax
s.v1 = a.v1; // fill s with information about A
s.v2 = a.v2;
show(s);
}
//inside B
Class getDestinationScreen(void) {
return Class(X);
}
//inside C
Class getDestinationScreen(void) {
return Class(Y);
}
솔루션 2의 내 문제는 B, C, D 등이 모델이기 때문에 뷰 관련 항목에 대해 알 수 없다는 것입니다. 아니면 그 경우에해야합니까?