- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我无法解决 UINavigationItem 上的提示问题...
我有一个主视图 Controller 和一个细节 View Controller 。当我从 master 推送到细节时,细节 View Controller 上会显示一个提示:
但是,当我弹回到主视图 Controller 时, View 没有调整大小并且窗口显示出来(窗口已被涂成红色):
这只发生在 iOS7 上,在 iOS6 上 View 按预期调整大小。
我尝试了一些方法,例如在 viewWillDisappear
或 viewDidDisappear
中将提示设置为 nil,但似乎没有什么可以解决的。
如果我将导航 Controller 中的导航栏设置为半透明,它确实可以解决此问题 - 不幸的是,这不是一个选项。
我在这里创建了一个非常小的示例项目来演示这个问题:https://github.com/InsertWittyName/NavigationItemPrompt
在此先感谢您的帮助!
最佳答案
我能想到的一个解决方案是子类化master的UIView
,实现viewDidMoveToSuperview
来设置view的frame从导航栏的高度到 super View 结束。由于导航栏不是半透明的,因此您的工作更轻松,因为您不必考虑布局指南和内容插图。
有几点需要注意。推送和弹出时,系统将 View Controller 的 View 移动到动画的另一个父 View 中,然后将其返回到导航 Controller 的私有(private) View 层次结构。此外,当 View 超出 View 层次结构时, super View 变为 nil
。
这是一个示例实现:
@interface LNView : UIView
@end
@implementation LNView
- (void)viewDidMoveToSuperview
{
[super viewDidMoveToSuperview];
if(self.superview != nil)
{
CGRect rect = self.superview.bounds;
rect.origin.y += 44;
rect.size.height -= 44;
[self setFrame:rect];
}
}
@end
这不是一个完美的实现,因为它使用了导航栏高度的硬编码值,没有考虑可能的工具栏等。但是所有这些你都可以作为属性添加到这个 View 和 viewDidLoad
,在开始进入 View 层次结构之前,根据您的需要设置参数。
关于ios - UINavigationItem 提示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115821/
在我的 UINavigationController 中,我推送三个 UITableViewController。在我的第二个 UITableViewController 中,我在 viewDidLo
我有一个 navigationItem 的子类,因为我想更改导航标题标签的文本、字体、颜色等。 我的 customNavigationItem.h 有以下内容: @interface CustomNa
我被难住了。我正在使用 UINavigationController,在一个 View 上我试图隐藏后退按钮。但是当我这样做时,它也会隐藏下一级 View 上的后退按钮。 在 - (void)view
我想用一个 navItem.rightBarButtonItem 加载 View Controller ,并根据一组情况将其更改为另一个。似乎我只能在 viewDidLoad 上加载它一次。更改图标后
我有一个 UINavigationItem(不是 UINavigationBar),我想使其透明或不透明。这是在我建立从导航 Controller 到我的 UIViewController 子类的关系
我创建了一个带有菜单结构的应用程序,并希望在初始化第一个 ViewController 之前拥有一个 DownloadViewController。 因此我在 DownloadViewControll
尝试修改 UINavigationItem 中的标题 // this modify the title self.navigationItem.title = @"Any title"; //
我正在尝试为 UINavigationItem 创建自定义动画。我有包含 4 个项目的导航栏,但是当我向下滚动时,我想将搜索栏放在导航中。我想要动画自下而上,但我尝试的一切都不起作用。 以下是我尝试过
我有一个自定义的 UITextField 添加到 UINavigationItem.titleView。但它不是becomeFirstResponder。为什么会这样? - (void) viewDi
我正在使用此代码在 UINavigationItem 中设置自定义图像: let button = UIButton(type: .system) button.frame = CGRect(orig
当我点击导航栏的标题时,有什么好方法可以让弹出窗口(特别是日期选择器)出现?我实际上使用的是 xcode6/swift,但假设 ios7 解决方案就足够了! 非常感谢! 最佳答案 您可以将按钮设置为标
谁能解释为什么有两个 navigationItems?当我像下面这样登录时: NSLog(@"%@", self.navigationItem); NSLog(@"%@", self.navigati
我找遍了,似乎无法弄清楚。我相信很多人都会有我的链接,我很可能已经看过了。但如果有人可以请给我看代码来执行以下操作: 我想在我的 UINavigationBar 中有一个左箭头作为“返回”UINavi
我遇到了一个问题,当我将项目推到导航 Controller 上时,后退按钮只显示“后退”。我尝试设置一个断点并检查堆栈上的导航项。堆栈中的所有项目都有一个 nil backButtonItem 和一个
我有两个字符串构建的文本:A(乙) 我想使用这两个字符串作为 UINavigationItem 的标题,但在截断的情况下,我只希望截断 A 而不是截断 B。 例子:我想要的标题是“The quick
我有一个 iPad 应用程序,在其中一个屏幕上我有一个 UIToolbar设置为 titleView的 viewController的 navigationItem .我还有一个 left-和一个 r
我正在使用基于 UIImageView 的动画来显示自定义事件指示器。以下代码负责设置: + (void)startLoadingActivity:(UIViewController *)vc {
我无法解决 UINavigationItem 上的提示问题... 我有一个主视图 Controller 和一个细节 View Controller 。当我从 master 推送到细节时,细节 View
我在 Xcode 5 的“默认导航 Controller ”中添加了几个 View Controller 。我想更改栏的颜色,但它不起作用。这是我使用的代码: [[UINavigationBar ap
如何在导航项中添加新按钮?假设我需要将其添加到右侧按钮附近。 用于左右的代码。 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem al
我是一名优秀的程序员,十分优秀!