11

所以我有一个模态视图,并希望以编程方式添加一个带有完成按钮的 UINavigationBar,以便在用户完成阅读内容时关闭此视图。

关于如何做到这一点的任何想法以及是否可以完全不使用界面构建器?

4

3 回答 3

48

很抱歉,这里没有人真正阅读您的问题...这是您要查找的代码:

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
navBar.backgroundColor = [UIColor whiteColor];

UINavigationItem *navItem = [[UINavigationItem alloc] init];
navItem.title = @"Navigation Bar title here";

UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(yourMethod:)];
navItem.leftBarButtonItem = leftButton;

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Post" style:UIBarButtonItemStylePlain target:self action:@selector(yourOtherMethod:)];
navItem.rightBarButtonItem = rightButton;

navBar.items = @[ navItem ];

[self.view addSubview:navBar];

我希望这会有所帮助,祝你好运:)

将此代码添加到您的 viewDidLoad 方法中,一切都会自行构建。请注意,用您自己的方法签名替换选择器-

快乐编码

于 2013-10-15T21:58:33.693 回答
7

这绝对是可能的。

可能最简单的方法是将UIViewController您正在呈现的模态嵌入到 a 中UINavigationViewController,然后添加Done按钮,执行类似的操作

UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] 
                            initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                            target:self 
                            action:@selector(dismiss)];
self.navigationItem.rightBarButtonItem = doneButton;

并实现dismiss如下方法

- (void)dismiss {
    [self.presentingViewController dismissViewControllerAnimated:YES 
                                   completion:nil];
}
于 2013-01-27T07:35:53.270 回答
3
//add done button to navigation bar
UIBarButtonItem *doneBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(userPressedDone)];
self.navigationItem.rightBarButtonItem = doneBarButtonItem;

然后在您的视图控制器中的某处有这样的方法

-(void)userPressedDone {
    // Action For Done Button Tapped
}
于 2013-01-27T07:38:35.327 回答