我在我的UITableViewController(在UINavigationController中)设置了一个UIRefreshControl,它按预期工作(即下拉触发正确的事件).但是,如果我以编程beginRefreshing方式在刷新控件上调用实例方法,如:
[self.refreshControl beginRefreshing];
Run Code Online (Sandbox Code Playgroud)
什么都没发生.它应该动画下来并显示微调器.endRefreshing刷新后调用时,该方法可以正常工作.
我用这种行为掀起了一个基本的原型项目,当我的UITableViewController直接添加到应用程序委托的根视图控制器时它可以正常工作,例如:
self.viewController = tableViewController;
self.window.rootViewController = self.viewController;
Run Code Online (Sandbox Code Playgroud)
但是,如果我首先添加tableViewController到UINavigationController,然后添加导航控制器rootViewController,该beginRefreshing方法不再有效.例如
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
self.viewController = navController;
self.window.rootViewController = self.viewController;
Run Code Online (Sandbox Code Playgroud)
我的感觉是这与导航控制器中的嵌套视图层次结构有关,不能与复习控件一起使用 - 任何建议?
谢谢
objective-c uitableview uinavigationcontroller ios uirefreshcontrol
偶尔我的表视图将不会连接到要刷新的服务,在这种情况下,我不希望UIRefreshControl存在.
我在viewDidLoad中添加它后,我尝试在某些情况下隐藏它setEnabled:,setHidden:但似乎都没有效果.
当我以编程方式更新表时,如何显示UIRefreshControl?使用[self.refreshControl beginRefreshing]使微调器具有动画效果,但不会显示它.
调用时我无法看到加载微调器 beginRefreshing
[self.refreshControl beginRefreshing];
Run Code Online (Sandbox Code Playgroud)
我的UITableViewController子类使用UIRefreshControl
// refresh
UIRefreshControl * refreshControl = [UIRefreshControl new];
[refreshControl addTarget:self action:@selector(refreshTableView) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)
它与用户交互完美配合(当用户将表放下时),然后可以看到微调器.
但是当我调用beginRefreshingviewDidLoad时,我没有看到微调器(只有当我向下拖动表时).
笔记:
self.refreshControl引用是对的
在beginRefreshing之后不会立即调用reloadData或endRefreshing,但是有很长的时间延迟(通过网络加载数据),所以我没有取消beginRefreshing.
编辑:
这只发生在0和i调用的contentOffset属性时.错误?Feauture?tableView[self.refreshControl beginRefreshing]