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位于导航栏中,不需要工具栏。谢谢!

4

1 回答 1

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];
    }
} 

然后,您还将- (void)dismissAnswersViewController:(id)sender在与 UIAlertView 委托方法相同的类中实现(基于我在这里的实现)。

希望这可以帮助!

于 2012-07-07T23:07:57.187 回答