- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经实现了一个自定义版本的搜索表单,它的行为很像带有范围栏的 UISearchBar(但实际上是出于 UI 原因以编程方式拼凑在一起)。屏幕加载了一个 TextField,您在 TextField 中点击,导航栏以动画方式离开屏幕,文本字段向上移动,并出现一个分段控件以过滤结果。
无论如何,一切正常,但是当我点击其中一个搜索结果时,我的代码会推送一个新的 ViewController。问题是新 Controller 在没有导航栏的情况下被推送(因为我在切换到搜索状态时使用了 [[self navigationController] setNavigationBarHidden:YES animated:YES]
)。
我可以在推送新 ViewController 时显示导航栏,甚至可以在出现向新 ViewController 的过渡时将其动画化 - 但所有这些解决方案看起来都很笨拙。我希望它像使用 UISearchBar(实际上更像电子邮件应用程序)一样工作,因为恢复的导航栏似乎只是从右侧滑入,就好像它是 subview Controller 的一部分一样。
我希望有一个简单的修复...谢谢
最佳答案
对于遇到这种情况的任何人,解决方案是让您的 Controller 成为 UINavigationController
的委托(delegate),然后在您的委托(delegate)方法中显示或隐藏导航栏。
你的 Controller 需要实现协议(protocol):
@interface MYSearchController() <UINavigationControllerDelegate>
然后在 -(void)viewDidLoad
中将您的 Controller 分配为委托(delegate):
[self navigationController].delegate = self;
最后,实现一个这样的方法:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if(viewController == self)
{
if(_searchState && ![self navigationController].navigationBarHidden)
{
[[self navigationController] setNavigationBarHidden:YES animated:YES];
}
}
else
{
if([self navigationController].navigationBarHidden)
{
[[self navigationController] setNavigationBarHidden:NO animated:YES];
}
}
}
关于iOS - NavigationBar 显示在子 Controller 上,隐藏在父 Controller 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18221833/
我需要管理嵌入在使用标准、浅色、模糊层的 NavigationController 中的两个 ViewController 之间的转换。应用程序这部分中的所有 ViewController 看起来都非
我有一个包含 3 个不同 NavigationController 的 Storyboard: 在第一个 NavigationController 的根 Controller 中,我在代码中添加了一个
先说说我的情况。我在我的 appDelegate 中设置了 UINavigationBar 颜色,例如: [[UINavigationBar appearance] setBarTintColor:[
这两种说法有什么区别。为了隐藏导航栏,我使用以下语句之一在 viewWillAppear 方法中隐藏导航栏,如下所示: -(void)viewWillAppear:(BOOL)animated {
目前我找不到任何方法来更改 SwiftUI 中导航栏的颜色/背景。有小费吗? 最佳答案 为了改变所有 View Controller 的导航栏颜色,你必须在 AppDelegate.swift 中设置
我可以自定义 QlPreviewController Controller 中导航栏的颜色吗? 我尝试过以下 [[UINavigationBar appearanceWhenContainedIn:
我正在开发一款带有 webview 布局的安卓游戏。我想在用户玩游戏时隐藏导航栏。我找到了一些解决方案,但是当我触摸屏幕时,导航栏出现了。 我做错了什么?这是我的无效解决方案: int mUIFla
我的导航栏上有这种奇怪的行为: 而且我不知道如何解决它。 我在 Storyboard上的设置是: 我希望条形颜色清晰,以便获得完美的模糊效果。 有任何想法吗? 感谢您的关注。 最佳答案 尝试这些设置可
我正在尝试实现一种 AlertWindow 类的东西,我正在使用 WindowsManager 的实例从服务。 View 可见且可访问。但是屏幕上 NavigationBar 上的后退/主页按钮似乎没
我想隐藏NavigationBar和stateBar以显示全屏图像,但似乎navigationBar并未完全隐藏: 代码如下: [[UIApplication sharedApplication]
我找不到关于如何使用 完成此操作的任何文档组件...基本上,当我的一个场景加载时,我希望能够传递一个 route.navBarColor到我的导航器,它将自动更改栏的背景颜色。 我尝试使用 {nav
我正在向导航栏层添加渐变,并且效果很好。当我推送另一个 View Controller 和弹出 View Controller 时,问题就来了。父 View Controller 有右边的条形按钮项目
我在 iOS 7 模拟器和设备上都遇到了一个奇怪的图形问题。 在按下 TableView 中的单元格后,我以编程方式从 Storyboard 中调用 segue: [self performSegue
我有一个 NavigationViewController,它的根是一个普通的 UIViewController。我通过以下方式以编程方式呈现 TableViewController: self.pe
我有 2 个 VC。在这两种情况下,我都将代码编写为 NavigationController 外观,但是当我从第二个 VC 返回到第一个时,我的一切都是黑色的...... 第一位风投: overri
我正在使用带有 UITableView 的普通 View Controller ,它嵌入到导航 Controller 中,导航 Controller 嵌入到标签栏 Controller 中: 标签栏
我的 Storyboard中有一个导航栏,并设置了以下约束: Horizontal Space - (-16) - View Navigation Bar Horizontal Space - (-1
我的结构如下: ContainerView --embed segue--> NavigationController --> UITableViewController A --push segue
嘿,我在 UINavigationController 中有一堆 UIViewController。通常,标题(或 NavigationItem 的标题)决定了 NavigationBar 中显示的标
Second Image 问题是当我弹出我的 Controller 时,导航栏变成黑色,这非常烦人。需要帮助! 最佳答案 当您弹出屏幕时,您会回到上一屏幕。在预览屏幕中,您必须在 viewWillAp
我是一名优秀的程序员,十分优秀!