使用完成按钮以编程方式添加 UINavigationBar

Posted

技术标签:

【中文标题】使用完成按钮以编程方式添加 UINavigationBar【英文标题】:Add UINavigationBar programmatically with a Done button 【发布时间】:2013-01-27 07:30:57 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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 方法中,一切都会自行构建。请注意,用您自己的方法签名替换选择器 -

愉快的编码

【讨论】:

对于 ios 7 设置背景颜色:[navBar setBarTintColor:[UIColor blackColor]];和标题文本颜色: [navBar setTitleTextAttributes:@NSForegroundColorAttributeName : [UIColor whiteColor]];【参考方案2】:

绝对有可能。

可能最简单的方法是将您正在模态呈现的UIViewController 嵌入到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];

【讨论】:

正如我在回答中提到的,您应该将您的视图控制器嵌入到UINavigationController。这样,您就可以“免费”获得酒吧。有几种方法可以做到这一点,但这取决于您呈现模态视图的方式。【参考方案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

【讨论】:

以上是关于使用完成按钮以编程方式添加 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 10 - 以编程方式添加按钮时,滚动视图不允许滚动

如何以编程方式完全像这个一样布局 UIButton?

以编程方式将按钮添加到导航栏

使用 if() 以编程方式将不同的按钮添加到 RelativeLayout

以编程方式使用自动布局添加许多按钮以查看 X、Y、填充约束

以编程方式添加约束以防止按钮重叠 SWIFT 4