我的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吗?
万分感谢!
我有一个UITableViewController作为UINavigationController中的根视图控制器,UINavigationController又是UITabBarController中的一个视图控制器.所有人都在故事板中.
我也在Storyboard中为我的表配置了UIRefreshControl,通常看起来应该在拉动时:

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

它不是旋转或任何东西,只是卡住"满",它一直保持这种状态,直到我完全拉动并触发刷新.
任何想法或建议都会欣赏.
我已经成功JSON填充UITableView,但JSON经常更新,所以我需要刷新的能力.我按照THIS TUTORIAL实现了拉动刷新控制.在视觉上,它似乎一切正常,但当我调用tableView.reloadData()表不重新加载.但是,如果我离开ViewController并返回,表格会更新.为什么会tableView.reloadData()工作,viewDidAppear和viewWillAppear而不是在我的自定义refresh()功能?
MainVC.swift文件
class MainVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!
var dataArray: NSArray = NSArray()
@IBOutlet var Controller: UISegmentedControl!
var refreshControl:UIRefreshControl!
func refresh(sender:AnyObject)
{
refreshBegin("Refresh",
refreshEnd: {(x:Int) -> () in
self.tableView .reloadData()
println("Table Reloaded")
self.refreshControl.endRefreshing()
})
}
func refreshBegin(newtext:String, refreshEnd:(Int) -> ()) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
println("refreshing")
sleep(2)
dispatch_async(dispatch_get_main_queue()) {
refreshEnd(0)
}
}
}
override func viewWillAppear(animated: …Run Code Online (Sandbox Code Playgroud) 我有一个TableView嵌入在NavigationController中(并且它嵌入在TabBar控制器中)。每个单元格中都有一个用户名按钮,可以与用户的个人资料建立联系。
但是,当我在个人资料页面的导航栏上单击“返回”,并直接返回到表格视图后,似乎我在窃听一些东西。
如果我再次下拉,它会刷新,但是这次,第一行的用户名变得不可单击,而其他行则按预期工作。
请注意,在使用“后退”按钮后,我在tableView中进行了调用self.theRefreshControl = UIRefreshControl(),viewDidLoad但不确定是否正在调用它。
请注意,我使用进行搜寻prepareForSegue。
总结
如果我转到通知页面并尝试单击用户名,则单击用户名按钮并进行搜索
如果我转到通知,然后单击刷新,则第一行中的用户名按钮不起作用
如果我转到通知并且不进行任何刷新,则用户名按钮会自动切换并返回(因此不会出错)。
如果我转到通知并拉动刷新,则refreshControl图标会出现并消失,但是现在,它不允许我单击第一行的用户名按钮。
如果我确实刷新了通知,则不允许我单击第一行中的用户名。如果我单击第二个单元格中的第二个用户名,它将搜索到用户的个人资料,但是当我单击“后退”按钮时,它将出现如下错误:
ViewDidLoad()中的代码:
override func viewDidLoad() {
super.viewDidLoad()
self.theRefreshControl = UIRefreshControl()
self.theRefreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
self.theRefreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(theRefreshControl)
}
func refresh(sender: AnyObject) {
if isFirstLoad == false {
currentPage = 1
getStuff()
}
self.theRefreshControl.endRefreshing()
}
Run Code Online (Sandbox Code Playgroud)
我也尝试self.tableView.backgroundView = refreshControl在上方和下方添加self.tableView.addSubview(theRefreshControl);并且还试图更换self.tableView.addSubview(theRefreshControl)与self.tableView.backgroundView = refreshControl可惜没有运气