标签: uinavigationcontroller

iPhone - UIImagePickerControllerDelegate继承

我添加了UIImagePickerController一个UIViewController.我也指定了UIImagePickerControllerDelegate那个UIViewController.

当我执行以下行时,

myPicker.delegate = self;
Run Code Online (Sandbox Code Playgroud)

Xcode通过以下消息告诉我:

警告:从不兼容的类型'RootViewController'分配id

然后我将UINavigationControllerDelegate协议添加到同一个UIViewController并且错误消息消失了.

所以,我必须双方协议添加到UIViewController时候我加入UIImagePickerController

如果它UIImagePickerControllerUINavigationController文档中所述的子类,那么这不应该是自动的吗?为什么我必须添加其父代理协议而不仅仅是UIImagePickerControllerDelegate协议?

这是一个错误还是我错过了什么?

iphone inheritance delegates uiimagepickercontroller uinavigationcontroller

28
推荐指数
2
解决办法
1万
查看次数

在后退按钮旁边添加一个按钮

在iOS中,是否可以在默认后退按钮旁边添加一个按钮(使用该方法时自动创建的按钮pushViewController)

我想在这里添加一个按钮!

我试图使用的方法setLeftBarButtonItemssetBackBarButtonItem却徒劳无功-每当我设置左边栏按钮项目,默认返回按钮消失.

谢谢你的帮助!

objective-c uinavigationcontroller uinavigationitem ios

28
推荐指数
1
解决办法
5065
查看次数

UICollectionView调用scrollViewDidScroll:从导航堆栈弹出时

我有一个导航控制器,它的根视图控制器是类型CollectionViewControllerA.在选择一个项目后,我有一个淡出和扩展动画,然后调用将第二个类型的视图控制器CollectionVewControllerB推入堆栈:

CollectionViewControllerB *b = ... // construction of the view controller to be pushed
[UIView animateWithDuration:.3
                 animations:^{
                     self.collectionView.transform = CGAffineTransformMakeScale(1.5, 1.5);
                     self.collectionView.alpha = 0;
                 }
                 completion:^(BOOL s){
                     [self.navigationController pushViewController:b animated:NO];
                 }];
Run Code Online (Sandbox Code Playgroud)

我以类似的方式弹出视图控制器

[UIView animateWithDuration:.3
                 animations:^{
                     self.collectionView.transform = CGAffineTransformMakeScale(.3, .3);
                     self.collectionView.alpha = 0;
                 }
                 completion:^(BOOL s){
                     [self.navigationController popViewControllerAnimated:NO];
                 }];
Run Code Online (Sandbox Code Playgroud)

这里的问题是弹出视图控制器时应用程序崩溃.原因:

*** -[CollectionViewControllerB scrollViewDidScroll:]: message sent to deallocated instance
Run Code Online (Sandbox Code Playgroud)

我知道问题是因为弹出的视图控制器被破坏了,但为什么scrollViewDidScroll:首先调用它?没有改变contentOffsetcollectionView代码,并没有用户交互无论是.除非更改transform属性也会触发调用方法?

CollectionViewControllerB实现,scrollViewDidScroll:因为我需要禁用垂直滚动.

同时我有一个非常凌乱的黑客来防止崩溃,那是在动画之前,我补充说

self.collectionView.delegate = nil;
Run Code Online (Sandbox Code Playgroud)

这会阻止方法被调用.但必须有更好的方法.

任何人都可以阐明为什么 …

crash uiscrollview uinavigationcontroller ios uicollectionview

27
推荐指数
2
解决办法
9986
查看次数

在透明导航栏之间过渡到半透明

在Apple最近发布的Remote应用程序中,我注意到导航栏的行为方式是独特的,我无法重现它.当弹出正在播放视图控制器时,导航栏对于正在播放视图控制器保持透明,并且库视图控制器的导航栏也保持半透明(屏幕截图1).我想弄清楚他们是使用两个导航控制器还是只使用一个.我个人觉得他们只使用一个有两个原因(1)启用了交互式弹出手势; (2)当您按下库视图控制器中的"正在播放"按钮时,就在现在播放屏幕完成"推视控制器"动画之前,导航栏变为透明(屏幕截图2).这是我按下视图控制器时所遇到的行为(将导航栏设置为透明).所以我的问题是:Apple如何呈现两个视图控制器的两个视图控制器的导航栏,就像它们是个体一样(如屏幕截图1),甚至条形按钮,导航标题等...切换时的不透明度为100%(通常在当按下新控制器时,按下/弹出前一个视图控制器的按钮和标题会逐渐消失.我试着玩弄了吧色调颜色viewDidAppear,并viewWillAppear在这两个视图控制器,但无法重现相同的行为,并不能防止褪色栏按钮.

天哪我希望我已经很好地解释了这一点,我只是想着它而感到困惑!

截图1(弹出): 截图1

截图2(推送): 截图2

uinavigationbar uinavigationcontroller ios

27
推荐指数
1
解决办法
2万
查看次数

调用popViewControllerAnimated两次

UINavigationController有一系列的UIViewControllers关于它.在某些情况下,我想要回弹两个级别.我以为我可以popViewControllerAnimated连续两次调用它,但事实证明,第二次调用它时,它不会弹出任何东西而是返回NULL.我是否需要存储对目标VC的引用并调用popToViewControllerAnimated?我可以这样做,但它使我的代码变得复杂,因为UIViewController当我将VC推入堆栈时我必须传递*.

这是相关的片段:

UIViewController* one = [self.navigationController popViewControllerAnimated:YES];
if (...) {
    // pop twice if we were doing XYZ
    UIViewController *two = [self.navigationController popViewControllerAnimated:YES];
    // stored in "one" and "two" for debugging, "two" is always 0 here.
}
Run Code Online (Sandbox Code Playgroud)

我在做一些奇怪的事吗?我想写一些惯用的代码,所以如果"正确"的方式是打电话popToViewControllerAnimated,或者完全不同的话,我会乐意改变它.

iphone uinavigationcontroller

26
推荐指数
2
解决办法
2万
查看次数

Android UINavigationController之类的功能

在iPhone上,我使用导航控制器来推送和弹出视图.非常便利.

在Android中是否有同等效力?

android uinavigationcontroller

26
推荐指数
3
解决办法
2万
查看次数

更改UINavigationController标题的字体

我可以更改我的UINavigationController的字体吗?- > 标题

fonts title uinavigationcontroller ios

26
推荐指数
4
解决办法
3万
查看次数

UINavigationController交互式流行手势不起作用?

所以我在iOS 7应用程序中构建了一个导航控制器.titleView是可见的,以及它自己的后退按钮和导航栏.出于某种原因,交互式弹出手势(从左边缘轻扫)不起作用.什么都没发生.当我记录手势时,它不是零.为了启用此功能,我有什么特别的事吗?什么可能导致它不起作用?

gesture uinavigationcontroller ios ios7

26
推荐指数
8
解决办法
2万
查看次数

取消iOS 7后滑动手势后,导航堆栈变得无法使用

我遇到了一个问题,我的导航控制器在启动然后取消新的iOS 7后滑动手势后变得无法使用.

一些相关信息:

  • 我的应用程序有一个包含各种活动页面的主页.
  • 主页隐藏viewWillAppear中的导航栏
  • 主页取消隐藏viewWillDisappear中的导航栏

    -(void) viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        // Let's hide the navbar when we show the home view
        [self.navigationController setNavigationBarHidden:YES];
        …
    }
    
    -(void) viewDidDisappear:(BOOL)animated 
    {
        [super viewDidDisappear:animated];
    
        // Let's hide the navbar when we show the home view
        [self.navigationController setNavigationBarHidden:NO];
    }
    
    Run Code Online (Sandbox Code Playgroud)

当用户点击主页上的活动图标时,活动的视图控制器被推送到堆栈上.

如果用户开始在iOS中使用新的后滑动手势,但随后停止手势(即决定不返回),一切看起来都不错.但是,如果用户导致另一个视图控制器被推到导航堆栈上,那么唠叨条就会变得无法使用,并且用户无法从当前视图控制器导航回来.

笔记

  • 它只在我显示/隐藏导航栏时发生
  • 我仍然可以慢慢地执行后退手势,只要我不取消手势,一切都会正常工作
  • 导航栏似乎可以工作,但点击后退按钮不会弹出视图控制器.

uinavigationbar uinavigationcontroller ios ios7

26
推荐指数
1
解决办法
5488
查看次数

Swift - 在App Delegate中实例化没有故事板的导航控制器

我正在重建一个没有故事板的应用程序,而我遇到的最麻烦的部分是以编程方式导航视图.很少有东西写在那里没有使用故事板,所以找到答案是很困难的.

我的问题非常简单.我有我ViewController和我的SecondViewController想要从前者推到后者.

AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.backgroundColor = UIColor.whiteColor()
    window?.rootViewController = ViewController()
    window?.makeKeyAndVisible()

    return true
}
Run Code Online (Sandbox Code Playgroud)

然后在ViewController.swift:

class ViewController: UIViewController, AVAudioPlayerDelegate, UITextFieldDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        startFinishButton.setTitle("Begin", forState: .Normal)
        startFinishButton.addTarget(self, action: "moveToSecondViewController", forControlEvents: .TouchUpInside)
        view.addSubview <*> startFinishButton
    }

    func moveToSecondViewController(sender: UIButton) {
        let vc = SecondViewController()
        println(self.navigationController) // returns nil
        self.navigationController?.pushViewController(vc, …
Run Code Online (Sandbox Code Playgroud)

objective-c uinavigationcontroller ios appdelegate swift

26
推荐指数
2
解决办法
4万
查看次数