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

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

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

【问题讨论】:

    标签: objective-c xcode uinavigationbar modalviewcontroller


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多