我有一个带标签栏控制器的应用程序(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
在导航栏中,不需要工具栏。谢谢!
答案 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
(基于我在这里的实现)。
希望这有帮助!