UIRefreshControl由我的UINavigationController的UINavigationBar隐藏/隐藏

Tim*_*ber 18 cocoa-touch uitableview uinavigationcontroller ios uirefreshcontrol

我试图使用一个UIRefreshControl内部我UITableViewController自己在里面UINavigationController,它的hidesNavigationBar属性设置为NO(所以导航栏是可见的).

UIRefreshControl作品,但被掩盖UINavigationBar.我很惊讶我找不到其他遇到这个问题的人.

可能的相关要点:

  • rootViewController认为我UIWindow是我的UINavigationController.
  • UINavigationController通过设置viewControllers属性来设置初始视图控制器UINavigationController.
  • 我的UITableViewController子类用nib实例化.
  • UIRefreshControlviewDidLoad我的UITableViewController子类的方法中实例化我.我在这个方法中设置了子类的refreshControl属性UITableViewController.
  • UIRefreshControl工作完全正常,我可以看到它的一部分,但它是由我的遮蔽UINavigationBar.如果我设置hidesNavigationBarYES(但我不想隐藏它),这看起来完全正常.

编辑:

用于创建和定位我的代码UIRefreshControl是:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self 
                   action:@selector(toggleRefresh:) 
         forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)

这段代码片段在viewDidLoad我的UITableViewController子类的方法中,它是一个子视图控制器UINavigationViewController.

Ale*_*lav 44

对于那些针对iOS的7,似乎有一个新的问题,目前在UIRefreshControl背后绘制UITableViewbackgroundView.我在以UIRefreshControl编程方式和故事板初始化时都遇到了这种情况.一个简单的解决方法是更新您zPositionUIRefreshControlin :viewDidLoadUITableViewController

self.refreshControl.layer.zPosition = self.tableView.backgroundView.layer.zPosition + 1;
Run Code Online (Sandbox Code Playgroud)