我有一个UITableViewController,我在其上设置了backgroundView.该控制器安装了UIRefreshControl.问题是,当我设置背景视图时,刷新控件是不可见的.如果我删除背景视图,我可以看到刷新控件.
难道我做错了什么?
我的UIRefreshController正在做一些奇怪的事情.当我下拉刷新时,tableView标头被移位.
如果我下拉它看起来不错,但如果我向下滚动表时,复习仍在工作,头被刷新控制的高度,而UITableCells是罚款和滚动头之后偏移.


我想避免创建一个tableViewController,所以我在viewDidLoad中执行以下操作:
_refreshControl = [[UIRefreshControl alloc] init];
[_refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];
[_tableView addSubview:_refreshControl];
Run Code Online (Sandbox Code Playgroud)
我在不同的视图控制器中有很多表需要这个功能.有什么方法可以避免为每个人制作一个UITableViewController吗?
万分感谢!
我目前正在为我的应用程序使用JASidePanel,我有一个带UIRefreshControl的UITableViewcontroller作为它的ViewControllers之一.我的tableview的宽度仍然是320像素的宽度,因此UIRefreshControl在视图中间居中.我想弄清楚是否有办法偏移UIRefreshControl(将x向左移动20个像素),这样当我的侧面板可见时它看起来居中.
谢谢!

我有一个UITableViewController作为UINavigationController中的根视图控制器,UINavigationController又是UITabBarController中的一个视图控制器.所有人都在故事板中.
我也在Storyboard中为我的表配置了UIRefreshControl,通常看起来应该在拉动时:

但是,如果我在其他标签之间切换一次或两次,它看起来像这样:

它不是旋转或任何东西,只是卡住"满",它一直保持这种状态,直到我完全拉动并触发刷新.
任何想法或建议都会欣赏.
是否有可能添加UIRefreshControl到底部UITableView?我会用它来加载更多数据.请问,有什么建议吗?
我正在使用以下代码来创建UIRefreshControl:
- (void) viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(doLoad) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
}
- (void) doLoad
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// Instead of sleeping, I do a webrequest here.
[NSThread sleepForTimeInterval: 5];
dispatch_async(dispatch_get_main_queue(), ^{
[tableView reloadData];
[self.refreshControl endRefreshing];
});
});
}
Run Code Online (Sandbox Code Playgroud)
它很棒.如果我导航到我的视图,请拖动表格,代码运行并显示数据.
但是,我想要做的是在视图出现时将视图置于"加载"状态(这样用户知道某些事情正在发生).我尝试添加以下内容:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.refreshControl beginRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.当我导航到视图时,它看起来像一个常规视图(刷新控件不可见),当我尝试拉动刷新控件时,它从未完成加载.
显然我会以错误的方式解决这个问题.关于我应该如何处理的任何建议?
当我以编程方式更新表时,如何显示UIRefreshControl?使用[self.refreshControl beginRefreshing]使微调器具有动画效果,但不会显示它.
我试图使用一个UIRefreshControl内部我UITableViewController自己在里面UINavigationController,它的hidesNavigationBar属性设置为NO(所以导航栏是可见的).
该UIRefreshControl作品,但被掩盖UINavigationBar.我很惊讶我找不到其他遇到这个问题的人.
可能的相关要点:
rootViewController认为我UIWindow是我的UINavigationController.UINavigationController通过设置viewControllers属性来设置初始视图控制器UINavigationController.UITableViewController子类用nib实例化.UIRefreshControl在viewDidLoad我的UITableViewController子类的方法中实例化我.我在这个方法中设置了子类的refreshControl属性UITableViewController.UIRefreshControl工作完全正常,我可以看到它的一部分,但它是由我的遮蔽UINavigationBar.如果我设置hidesNavigationBar为YES(但我不想隐藏它),这看起来完全正常.用于创建和定位我的代码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.
cocoa-touch uitableview uinavigationcontroller ios uirefreshcontrol
我开始使用iOS 7 SDK在XCode 5下进行编程.当我使用'attributedText' 创建UITableViewController时UIRefreshControl,我已经将文本覆盖在UIRefreshControl图形顶部(圆形进度动画).
但当我拉下并松开手指时,文字会跳到正常位置.为什么会这样?
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(updateDeviceList) forControlEvents:UIControlEventValueChanged];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Update Devices States"];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)
在结束之前:

后UIRefreshControl释放:

我正在使用一个UITableView,它具有一个下拉刷新功能,但当我调用[self.refreshControl beginRefreshing]时,下拉刷新的微调器没有出现
上面的代码在viewDidLoad中调用,因为表最初正在加载一些数据.如果我在初始刷新后执行下拉刷新,则微调器工作正常.标题显示但不是旋转器.
似乎无法解决这个问题.它适用于iOS 9.3.2,但不适用于iOS 10.
这是我目前使用的代码.
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupView];
[self customSetup];
self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating Discounts..."];
[self.refreshControl addTarget:self action:@selector(reloadDeals) forControlEvents:UIControlEventValueChanged];
[self.refreshControl beginRefreshing];
[self.tableView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
uirefreshcontrol ×10
ios ×7
uitableview ×6
ios6 ×3
objective-c ×3
cocoa-touch ×1
ios10 ×1
ios7 ×1
ios9.3.2 ×1
iphone ×1
overlay ×1
refresh ×1