【发布时间】:2013-01-22 05:45:53
【问题描述】:
我正在尝试在我的UITableViewController 中使用UIRefreshControl,它本身位于UINavigationController 中,它的hidesNavigationBar 属性设置为NO(因此导航栏可见)。
UIRefreshControl 有效,但被UINavigationBar 遮挡。我很惊讶我找不到其他遇到此问题的人。
可能的相关点:
- 我将
UIWindow的rootViewController设置为我的UINavigationController。 - 我通过设置
UINavigationController的viewControllers属性来设置UINavigationController的初始视图控制器。 - 我的
UITableViewController子类是用 nib 实例化的。 - 我在我的
UITableViewController子类的viewDidLoad方法中实例化我的UIRefreshControl。我在这个方法中设置了UITableViewController子类的refreshControl属性。 -
UIRefreshControl工作得非常好,我可以看到其中的一部分,但它被我的UINavigationBar遮住了。如果我将hidesNavigationBar设置为YES,它看起来完全正常(但我不想隐藏它)。
编辑:
用于创建和定位我的UIRefreshControl 的代码是:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self
action:@selector(toggleRefresh:)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
这段代码 sn-p 在我的UITableViewController 子类的viewDidLoad 方法中,它是UINavigationViewController 的子视图控制器。
【问题讨论】:
-
尝试在 viewWillAppear 中设置刷新控件。
-
好主意,但没用。
-
然后尝试在笔尖设置刷新控制。在 Attributes Inspector 的 Table View Controller 下,您可以启用 Refreshing。
-
奇怪的是,当我选择文件的所有者时,属性检查器会显示“不适用”。 File's Owner 的类是
UITableView的子类。无论如何,我认为它是在笔尖中设置还是以编程方式设置并不重要。我看到UIRefreshControl,只是位置不正确。 -
你能把代码贴在你创建和放置控件的地方吗?
标签: ios uitableview cocoa-touch uinavigationcontroller uirefreshcontrol