- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
请原谅我,已经有大量关于如何以编程方式将 UIBarButtonItem 添加到 NavigationBar 的问题,但我似乎无法找到适合我的情况的任何解决方案。
这是一个简单的测试应用程序的布局,我一直在使用它来学习 UIPageViewController。
我的页面 View Controller 与三个独特的 viewController 配合得很好。我现在想为每个 View Controller 设置唯一的 rightBarButtonItems
。只需执行此操作,我就可以在 DetailViewController
中轻松设置一个通用的 barButtonItem
。
UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"Whatever"
style:UIBarButtonItemStylePlain
target:self
action:@selector(doSomething)];
self.navigationItem.rightBarButtonItem = newButton;
鉴于我需要为 pageViewController
中的三个页面中的每一个设置一个唯一的按钮,我无法在 detailViewController
中设置按钮。我已经在三个 Controller 的 viewDidAppear
中尝试了上面的代码,但是按钮不会出现。我也尝试过以相同的方式创建按钮,然后像这样设置它,但没有成功。
DetailViewController *vc = [[DetailViewController alloc] init];
vc.navigationItem.rightBarButtonItem = newButton;
我知道我离这里很近,我只是不确定如何指定我需要向 NavigationController 的 NavigationBar 添加一个按钮,该按钮正在运行嵌入了我的 contentViewController 的 detailViewController。任何帮助都会非常有用,尤其是片段。
作为旁注,我尝试了其他一些出现问题的方法。
viewDidLoad
而不是 viewDidAppear
中设置按钮
viewDidLoad
方法。但是 viewDidAppear
方法是这样的,所以我试图在那里设置按钮。有可能 viewWillAppear
每次都被调用,但我没有检查过。解决方案
事实证明我很接近......我不需要在 UIPageViewController 方法中创建按钮,我只需要在我的三个 View Controller 中的每一个中创建一个 navigationItem
属性。当在委托(delegate)方法中实例化 Controller 时,我只需将 navigationItem 属性设置为等于 detailViewController 的属性。这样在我的 viewDidApper
方法中我可以创建按钮。然后在 viewWillDisappear
处,我将按钮设置为 nil
。您还可以只在 DetailViewController
的 viewdidLoad
处创建按钮,并在各个 viewController 的 viewDidAppear
中更改文本和操作。这是一个示例。
在委托(delegate)方法中
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
我根据 viewController 的索引调用辅助方法。辅助方法在调用时实例化 View Controller 。实例化后,我设置了一些属性,包括 navigationItem 属性。
-(FirstController *)controllerAtIndex:(NSUInteger)index
{
FirstController *fvc = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstPageController"];
fvc.imageFile = self.pageImages[index];
fvc.titleText = self.pageTitles[index];
fvc.pageIndex = index;
fvc.navItem = self.navigationItem;
return fvc;
}
然后在 viewController 的 viewDidAppear
中我只是这样做
-(void)viewDidAppear:(BOOL)animated
{
UIBarButtonItem *newButton = [[UIBarButtonItem alloc]
initWithTitle:@"Whatever" style:UIBarButtonItemStylePlain target:self action:@selector(doSomething)];
navItem.rightBarButtonItem = newButton;
}
最佳答案
如果您每次更改查看的页面时都需要更改按钮,则必须在您尝试过的委托(delegate)方法之一中完成。但是,我建议不要创建新按钮并将其设置为导航项,而只需更改标题即可。
您可以在界面生成器中创建按钮并将其链接到您的 DetailViewController
中的属性,然后调用 setTitle:forState
和 UIControlStateNormal
每次转到新页面时都会出现该按钮。
如果您需要按钮为每个页面执行不同的操作,我建议您在按钮操作方法中检查当前页面,而不是每次都声明一个新页面。
关于ios - 如何在使用 UIPageViewController 时将 UIBarButtonItem 添加到 NavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734306/
我需要管理嵌入在使用标准、浅色、模糊层的 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
我是一名优秀的程序员,十分优秀!