【发布时间】:2013-01-28 15:29:32
【问题描述】:
我创建了一个弹出窗口,其中有几个屏幕都由导航控制器控制。我已经看到了这样的示例,在这些示例中,当您在屏幕之间切换时,导航栏的标题和“完成”按钮始终位于相同的位置并且从不动画。唯一发生的变化是出现的“返回”按钮。
我试图模仿同样的行为,但事情并不完全准确。
每当屏幕转换时,标题和完成按钮都会向左滑动并淡出,就像视图的正常动画一样。我需要他们留在原地,只有视图动画。此外,正在自动生成的“后退”按钮(我没有创建它,但导航栏正在创建一个)被标记为前一个屏幕的标题。我需要它只是“回来”。如何自定义自动生成的按钮?或者至少停止它的创建,以便我自己创建一个按钮?
一些代码...
//popover and navbar creation
SettingsPopoverView *settingsPopoverView = [[SettingsPopoverView alloc] initWithNibName:@"SettingsPopoverView" bundle:[NSBundle mainBundle]];
UINavigationController *nav = [[UINavigationController alloc]
initWithRootViewController:settingsPopoverView];
popover = [[UIPopoverController alloc] initWithContentViewController:nav];
popover.delegate = self;
popover.popoverContentSize = CGSizeMake(320, 497);
[popover presentPopoverFromRect:Button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
然后在我的代码中,一旦用户在第一个弹出窗口中进行选择
//screen navigation call when selection is made
[self.navigationController pushViewController:selectionView animated:YES];
同样,这组代码会为我的导航栏设置动画,并在下一个视图中自动生成带有错误标签的后退按钮。我需要停止导航栏的动画并更改后退按钮的标签。
谢谢
【问题讨论】:
-
在你看到的例子中,主视图的变化是否被动画化了?
-
它是一个分组列表视图,当新视图出现在屏幕上时它会滑到屏幕左侧。据我所知,是的,它仍然是动画的,而导航栏没有。它看起来好像屏幕顶部的导航栏始终保持不变,而其下方的视图在更改时会显示动画。
-
不知道是怎么做到的。我想我可以使用带有自定义 NavigationBar 的自定义导航控制器来做到这一点,它只会覆盖 pushNavigationItem:animated: 并将 NO 传递给超类,但这不起作用。导航控制器永远不会调用该方法(在我的测试中,导航控制器确实有我的自定义栏,并且调用了它的 init 和 setItems:animated: 方法)。我不知道导航控制器是如何告诉它的导航栏动画的。
-
对,我一直在玩 popNavigationItemAnimated 和 pushNavigationItem 方法,但似乎都没有任何效果。
-
我想知道,在您看到的示例中,他们是否使用工具栏并手动控制它。后退按钮是否具有通常的外观?
标签: iphone ios objective-c xcode ipad