- 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/
仅限 Swift 我创建了一个功能齐全的 UIPageViewController,其中包含 3 个不同的 UIViewController,是否可以在其中一个 UIViewController 中创
我正在寻找一种解决方案,其中我将一个 uipageviewcontroller 嵌入到另一个 uipageviewcontroller 中,因此当我尝试滑动最后一个 viewcontroller 时内
我想调整我的 UIPageViewController 以像图像中那样工作,目前 1b 可以去 2a 等。我需要什么像图片中那样锁定方向?我忘记了什么还是我使用了错误的逻辑。任何提示都会有很大帮助!
我在从 UIPageViewController 打开 View 并返回到 PageViewController 上的同一页面时遇到问题。我当前的设置是一个教程,您可以滚动页面查看教程。在第二页上,它
几个小时以来,我一直在努力解决这个问题,我一定是误解了 UIPageViewController 的工作原理。 我有 5 个设置屏幕(加载到 UIPageViewController 中的独立 Vie
我正在尝试将 UIPageViewController 的 UIPanGestureRecognizer 分配给不同的(自定义) View ,以便用于页面切换的平移手势仅适用于屏幕的特定区域。代码基本
我的 UIPageViewController 有一个大问题。我想使用部分和子部分在我的应用程序中呈现内容。因此,我创建了 UIPageViewController 的“两个” 实例 - 水平(红色)
我正在尝试创建一个只占据屏幕一部分的滚动页面 View Controller 。我已经使用 Storyboard 和 ContainerView 对象成功地做到了这一点,但我现在需要复制以编程方式创建
我正在使用 UIPageViewController 来浏览页面(UIViewController 数组)。我将页面 View Controller 推到顶部导航 Controller 上。 当我启动
我在 Xcode 4 中使用基于页面的应用程序模板来加载 PDF 页面并在隐藏的文本框上创建一个 UITextView,以便用户可以写笔记。 到目前为止,我已经完成了所有工作,但是当我添加 UITex
我正在使用带有 transitionStyle 的 UIPageViewController UIPageViewControllerTransitionStyleScroll和导航定位UIPageV
我是 iPhone 应用程序开发新手,需要在我正在开发的应用程序中显示 PDF 文件。我想使用 UIPageViewController 因为它允许分页等。到目前为止,我还无法弄清楚如何将内容加载到
谁能告诉我,如何使用 UIPageViewController 在我的背景图像而不是 View 边界周围制作阴影? 换句话说,我有一个“不规则的背景图像”,其边界看起来像波浪。当我从一个页面转到另一个
我的 UIPageViewController 在 iOS 5 中运行良好。但是当 iOS 6 出现时,我想使用新的滚动过渡样式(UIPageViewControllerTransitionStyle
我已经在这上面花了几个小时了。我已使用 UIPageViewControllerNavigationOrientationHorizontal 初始化了 UIPageViewController,
在我的应用程序中,我使用 UIPageViewController (PVC) 以及 UIPageViewControllerTransitionStylePageCurl 过渡样式和 UIPageV
我有一个 UIPageViewController显示带有 Transition style scroll 的图像.我要处理tap和 pan手势所以为了做到这一点,我做了一个小技巧,把另一个 view
我有一个 UIPageViewController ( 委托(delegate))管理 3 个 UIViewController . 要从第二个 View 转到第三个,我必须点击一个按钮,否则第二个
我正在展示一个简单的 UIPageViewController 并向其中添加一些非常简单和愚蠢的 subview Controller 。当 UIPageViewController 被解雇时,我正在
我有一个带有动态变化数据源的 UIPageViewController - viewControllerAfterViewController 和 viewControllerBeforeViewCo
我是一名优秀的程序员,十分优秀!