2012-07-07 3 views
0

탭 막대 컨트롤러가있는 앱 (2 탭)이 있습니다. 하나의 탭보기 컨트롤러에서 단추는 경고 창으로 연결됩니다. 경고 창에있는 하나의 단추에서 가능한 답을 포함하는 테이블보기를 호출하고 싶습니다. 해당 테이블보기에 done 단추와 title 단추가 있어야합니다. 나는 그것이 네비게이션 컨트롤러가 사용되어야한다는 것을 의미한다고 생각한다. 그러나 내비게이션 컨트롤러에서 찾을 수있는 대부분의 것들은 훨씬 더 복잡한 상황을 가정합니다.탭 막대 컨트롤러 안에 테이블보기가있는 매우 간단한 탐색 컨트롤러가 필요합니다.

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

{ 
    if (buttonIndex == 2) { 
     AnswersViewController *aVC = [[AnswersViewController alloc] init]; 
     [self presentViewController:aVC 
          animated:YES 
         completion:NULL];  
    } 
} 

그리고 AnswersViewController는 다음과 같습니다 : 다음은 경고 창 로직의 일부 예상

@interface AnswersViewController : UITableViewController 
@end 

@implementation AnswersViewController 

- (id) init 
{ 
    self = [super initWithStyle:UITableViewStylePlain]; 
    return self; 
} 


- (id) initWithStyle:(UITableViewStyle)style 
{ 
    return [self init]; 

} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[self view] setBackgroundColor:[UIColor redColor]]; 

} 

@end 

이 코드는 모든 작품으로 (빈 빨간색 UITableView가 나타납니다).

두 가지 질문 : 1. 테이블보기에 done 버튼과 title을 줄 수있는 간단한 수정이 있습니까? 2. 내비게이션 컨트롤러 (아마도)로 가야한다면, done 버튼과 title이있는 베어 본 네비게이션 컨트롤러를 만들고 그 안에 테이블 뷰를 삽입 할 수 있습니까? 아, 그리고 나는 이것을 프로그램 적으로하고 싶다. 탐색 모음에 done 버튼과 title을 선호한다고 생각합니다. 툴바는 필요 없습니다. 감사!

답변

1

원하는 것을 얻으려면 UINavigationController를 사용해야합니다. 그러면 제목과 버튼을 표시 할 수있는 UINavigationBar가 제공됩니다.

, 당신은 다음과 같이 부드럽게 할하려는 UINavigationController가 이것을 구현하려면 (ARC를 사용하는 당신을 가정, 그래서 당신은 메모리 관리에 대해 걱정할 필요가 없습니다) :

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

{ 
    if (buttonIndex == 2) { 
     AnswersViewController *aVC = [[AnswersViewController alloc] init]; 

     //Make our done button 
     //Target is this same class, tapping the button will call dismissAnswersViewController: 
     aVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissAnswersViewController:)]; 

     //Set the title of the view controller 
     aVC.title = @"Answers"; 

     UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:aVC]; 
     [self presentViewController:aNavigationController 
         animated:YES 
        completion:NULL]; 
    } 
} 

그런 다음 당신은 또한 구현하는 것이 UIAlertView 대리자 메서드와 동일한 클래스에있는 - (void)dismissAnswersViewController:(id)sender (여기에있는 구현을 기반으로 함)입니다.

희망이 도움이됩니다.

+0

감사합니다. 완성을 위해서 autoreleases는 필요하지 않았고'initWithBarButtonSystemItem : UIBarButtonItemStyleDone'은'initWithBarButtonSystemItem : UIBarButtonSystemItemDone'이되어야합니다. aVC. * 라인은'AnswersViewController' 클래스에서 끝나야합니까? –

+0

아, ARC를 사용해야합니다. :-) 그들은 어느 위치 에나있을 수 있습니다. 다른 케이스에 대해 다른 제목을 원한다면, 여기에두면 그렇지 않으면'viewDidLoad :'의'AnswersViewController' 클래스로 옮길 수 있습니다. – cotugs

관련 문제