iOS,Objective C 呈现 NavigationController 模式并添加取消按钮

Posted

技术标签:

【中文标题】iOS,Objective C 呈现 NavigationController 模式并添加取消按钮【英文标题】:iOS, Objective C Presenting NavigationController modal and adding cancel button 【发布时间】:2017-04-20 12:30:29 【问题描述】:

我正在尝试展示一个视图控制器模式。所以我创建了一个新的导航控制器并调用initWithRootViewController 问题是我想在导航栏中创建一个取消按钮,但我做不到。 首先,是否可以从外部而不是在导航控制器中设置导航栏上的按钮和文本?

如果设置一个新的自定义 navigationItem 不起作用,我该怎么做?

【问题讨论】:

你想做什么,这里面临什么问题? 我无法在导航栏左侧显示取消文本 如何添加取消按钮? 您是在模态显示导航控制器,还是从导航控制器的根控制器显示第三个视图控制器? 【参考方案1】:

是的,您可以在导航栏顶部添加取消按钮和标题。

在导航控制器中嵌入您的视图控制器,并将 storyboadId 提供给导航控制器。然后在你想展示你想要的 VC 时添加代码在哪个类中

 UINavigationController *initialNavigationController = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"HomeNavCtrl_id"];
[self presentViewController:initialNavigationController animated:YES completion:nil];

在 viewDidLoad() 中您想要的类中添加此代码

UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
                           initWithTitle:@"Flip"                                            
                           style:UIBarButtonItemStyleBordered 
                           target:self 
                           action:@selector(cancelButtonAction:)];
self.navigationItem.rightBarButtonItem = flipButton;
self.navigationItem.title = @"Wishlist";

取消按钮操作使用这个

- (IBAction)cancelBtnAction:(id)sender

     [self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

【参考方案2】:

我自己解决了这个问题。问题是我必须在根视图控制器中设置我的取消按钮,而不是从导航控制器的外部设置。

【讨论】:

以上是关于iOS,Objective C 呈现 NavigationController 模式并添加取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

IOS/Objective-C:在呈现视图控制器中设置属性

在Objective C中,当呈现一个新场景时,如何去除旧场景?

呈现小Modal VIewController Objective C

警告“尝试呈现视图不在窗口层次结构中的 ViewController - Objective C

应用程序试图在 React Native Objective-C 扩展中的目标上呈现一个 nil 模态视图控制器

iOS 13.1 Objective-C ModalPresentation 全屏