2012-01-16 4 views
1

IOS rpg을 개발하는 중입니다. 이 게임은 탭 막대로 제어되며 탭 막대의 모든보기 컨트롤러에는 화면 상단에있는 공통 "머리글"이 있으며 플레이어에 대한 정보가 표시됩니다.한 번에 여러 그림을 볼 수있는 ViewController

그러나 나머지 화면에는 다양한보기 중 하나가 표시됩니다. 각보기 컨트롤러는 "머리글"보기 아래에 여러 가지 다른 "보기"를 표시 할 책임이 있습니다. 또한 이러한보기의 대부분은 화면 경계에 맞지 않으므로 스크롤 할 수 있어야합니다.

질문 : 단일 뷰 컨트롤러에 별도의 펜촉에서 두 가지보기를 추가하려면 어떻게

1).

2) 이러한보기 중 하나만 스크롤보기에 어떻게 포함합니까?

감사합니다.

답변

1

NSBundleloadNibNamed:owner:options: 기능을 통해 펜촉을로드 할 수 있습니다. 반환 값은 펜촉의 모든 객체 배열입니다 (인터페이스 빌더에서 펜촉을 만들 때 왼쪽에 표시되는 목록). 보기라면 펜촉의 객체 목록에있는 첫 번째 항목이며, 그 배열의 0 번째 색인에있는 객체입니다.

NSArray *objects1 = [[NSBundle mainBundle] loadNibNamed:@"View1Nib" owner:self options:nil]; 
UIView *customView1 = [objects1 objectAtIndex:0]; 

NSArray *objects2 = [[NSBundle mainBundle] loadNibNamed:@"View2Nib" owner:self options:nil]; 
UIView *customView2 = [objects2 objectAtIndex:0]; 

UIScrollView *scroll = [[[UIScrollView alloc] init] autorelease]; 
[scroll addSubview:customView2]; 

[[self view] addSubview:customView1]; 
[[self view] addSubview:scroll]; 
+0

왜 이것을 다운 그레이드 했습니까? – ColdLogic

+0

이것이 효과적이었고 정확하게 내가 찾고 있던 것이 었습니다. –

0

뷰 컨트롤러를 만들 때 xib를 자동으로 생성하도록 선택하면 뷰 콘센트가 기본적으로보기에 연결됩니다. 이제 다른 이름으로 새 xib를 만들고 해당 파일 소유자를보기 컨트롤러 클래스로 만듭니다. 또한 뷰 콘센트를 수동으로 연결하십시오. 이제 init 메소드 호출

YourViewController *x = [[YourViewController alloc] initWithNibName: @"yourNibName" bundle:nil]; 

로드 할 어떤 XIB에 따라, "yourNibName"대신에 이름을 넣습니다. 희망이 도움이됩니다.

+0

참고 펜촉,보기가 아닙니다. – ColdLogic

0
  1. 당신은 모두 뷰에 대한 참조가 필요하고 있습니다 할 수 있습니다 단순히 [view addSubview:secondView]; 정상적으로. 보기 컨트롤러와 관련되지 않은 xib의보기에 대한 참조를 얻는 방법에는 여러 가지가 있지만보기는 해당보기가 이미 응용 프로그램의 다른 곳에서 인스턴스화되었는지 여부에 따라 다릅니다. 이미 다른 곳에서 해당보기를 인스턴스화하고 있으므로 추가하고 싶습니다. 만약 그랬다면, 난 그 뷰의 부모를위한 싱글 톤을 사용, 그래서 나는 같은 것을 할 수있는 :

    [view addSubview:[ParentClass parentClassSharedInstance] viewToAdd]];

  2. 스크롤 뷰를 완전히 이해하는 작업을해야합니다 짐승이다, 그러나 당신 다른 뷰와 마찬가지로 뷰를 뷰에 추가 할 수 있습니다. 중요한 점은 프레임의 크기보다 클 수있는 contentSize 속성을가집니다. 일반적으로 ScrollView 아래의 모든 뷰를 관리하려는 크기의 단일 뷰를 사용합니다. 행운을 빕니다! I는 펜끝의 여러보기있는 경우

1

차라리 배열의 순서에 의존하지 않고 복원 식별자를 사용하고 다음의 수행이 뷰에서 컨트롤러를로드하도록

UINib *nib = [UINib nibWithNibName:@"Nib" bundle:nil]; 
NSArray* views = [nib instantiateWithOwner:self options:nil]; 
assert(views.count == 3); 
UIView *aView; 
UIView *anotherView; 
UIView *yetAnotherView; 
for (UIView* view in views) { 
    if ([view.restorationIdentifier isEqualToString:@"AViewId"]) { 
     aView = (SettingsCell *) view; 
    } 
    else if([view.restorationIdentifier isEqualToString:@"AnotherViewId"]) { 
     anotherView = (SettingsCell *) view; 
    } 
    else if([view.restorationIdentifier isEqualToString:@"YetAnotherViewId"]) { 
     yetAnotherView = (HeaderView *)view; 
    } 
} 
assert(aView && anotherView && yetAnotherView); 
관련 문제