2010-08-19 8 views
1

두 가지 기본 화면 인 UIMapView와 UITableView가있는 간단한 앱이 있습니다. 두 개의 세그먼트가있는 UISegmentedControl과 두 개의 버튼이있는 툴바가 아래쪽에 있습니다. "Map"과 "Table". (레이아웃은 iPhone과 함께 제공되는 Google지도 앱과 비슷합니다.) 사용자가 앞뒤로 전환 할 때 UIMapView (UIMapViewController가있는) 또는 UITableView (UITableViewController 사용) 중 하나를 표시하는 동안 어떻게 동일한 툴바를 유지할 수 있습니까? 세분화 된 컨트롤? 물론 두 개의 다른보기 각각에 대해 동일한 도구 모음을 만들고 따로 표시 할 수 있지만 더 좋은 방법이 있습니까?하나의 UIToolbar를 여러 UIViewController와 함께 어떻게 사용할 수 있습니까?

+1

당신은 MKMapView를 의미합니다. UIMapView가 없습니다. – Felix

답변

0

단일 뷰 컨트롤러를 사용하고,보기에 조회수 (UIMapView, jQuery과 등)을 모두 추가하고 단순히 간단한 응용 프로그램과 함께 세그먼트 제어

을 클릭시 올바른 견해를 표시/숨기기 수 뷰가 많지 않으면 어지러운/클러스터 된 뷰 컨트롤러 파일이 없어야하며이 두 뷰를 쉽게 표시하거나 숨길 수 있습니다. 이 착해 보이는, 그래서

아마도

2

는 세그먼트 제어에 대응하여 2 VC의와 MKMapView 및 jQuery과 사이의 전환을 관리하는 UIViewController에 쓰기보기 사이를 전환 사이에 애니메이션을 사용합니다. 인터페이스 빌더에서이 새로운 VC를위한 펜촉을 먼저 설정하십시오 : UISegementedControl과 간단한 UIView (contentView)를 추가하십시오.

// 
// MapAndTableViewController.h 
// 

#import <UIKit/UIKit.h> 

#import "MyMapViewController.h" 
#import "MyTableViewController.h" 

@interface MapAndTableViewController : UIViewController { 

    IBOutlet UISegmentedControl* segmentedControl; 
    IBOutlet UIView* contentView; 
    UIViewController* firstVC; 
    UIViewController* secondVC; 
} 


-(IBAction) valueChanged:(UISegmentedControl*) sender; 

@end 

구현 :

// 
// MapAndTableViewController.m 
// 

#import "MapAndTableViewController.h" 


@implementation MapAndTableViewController 

-(IBAction) valueChanged:(UISegmentedControl*) sender { 

    if (sender.selectedSegmentIndex == 0) { 
     [UIView transitionFromView:[contentView.subviews lastObject] toView:firstVC.view duration:0.5 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; 
    } 
    if (sender.selectedSegmentIndex == 1) { 
     [UIView transitionFromView:[contentView.subviews lastObject] toView:secondVC.view duration:0.5 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; 
    } 

} 

-(void)awakeFromNib { 
    firstVC = [[MyMapViewController alloc] initWithNibName:@"MyMapViewController" bundle:nil]; 
    secondVC = [[MyTableViewController alloc] initWithNibName:@"MyTableViewController" bundle:nil]; 

} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [contentView addSubview:firstVC.view];  
} 

- (void)dealloc { 
    [firstVC release]; 
    [secondVC release]; 
    [super dealloc]; 
}  

@end 

valueChanged 방법은 현재보기를 대체 인터페이스 파일은 분할 제어에 대응하는 조치를 + 2 VC 년대 UI 요소와에 대한 참조를 포함 전환을 애니메이션화합니다.

보기 firstVC.viewsecondVC.view은 각 VC의보기 속성에 처음 액세스 할 때 만들어집니다.

관련 문제