需要一个非常简单的导航控制器,在标签栏控制器内有一个表视图

时间:2012-07-07 22:43:35

标签: objective-c ios uitableview uinavigationcontroller

我有一个带标签栏控制器的应用程序(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 个答案:

答案 0 :(得分: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(基于我在这里的实现)。

希望这有帮助!