只是好奇,因为它似乎不可能,但有没有一个偷偷摸摸的方式来利用新的iOS 6 UIRefreshControl类而不使用UITableViewController子类?
我经常使用UIViewController一个UITableView子视图,并符合UITableViewDataSource和UITableViewDelegate而不是使用UITableViewController顾左右而言他.
我正在使用swift构建一个RSS阅读器,需要实现pull to reload功能.
这是我试图这样做的方式.
class FirstViewController: UIViewController,
UITableViewDelegate, UITableViewDataSource {
@IBOutlet var refresh: UIScreenEdgePanGestureRecognizer
@IBOutlet var newsCollect: UITableView
var activityIndicator:UIActivityIndicatorView? = nil
override func viewDidLoad() {
super.viewDidLoad()
self.newsCollect.scrollEnabled = true
// Do any additional setup after loading the view, typically from a nib.
if nCollect.news.count <= 2{
self.collectNews()
}
else{
self.removeActivityIndicator()
}
view.addGestureRecognizer(refresh)
}
@IBAction func reload(sender: UIScreenEdgePanGestureRecognizer) {
nCollect.news = News[]()
return newsCollect.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
我正进入(状态 :
属性'self.refresh'未在super.init调用中初始化
请帮助我理解手势识别器的行为.一个工作示例代码将是一个很好的帮助.
谢谢.
我试图将添加UIRefreshControl到UICollectionView,但问题是,刷新控制不会出现,除非集合视图填补了其父容器的高度.换句话说,除非集合视图足够长以至于需要滚动,否则无法向下拉以显示刷新控件视图.一旦集合超过其父容器的高度,它就会被拉下并显示刷新视图.
我已经UICollectionView在主视图内部设置了一个快速iOS项目,并在集合视图中添加了一个插座,以便我可以添加UIRefreshControl它viewDidLoad.还有一个带有重用标识符的原型单元cCell
这是控制器中的所有代码,它很好地演示了这个问题.在此代码中,我将单元格的高度设置为100,这不足以填充显示,因此无法拉取视图并且不会显示刷新控件.将其设置为更高的值以填充显示,然后它可以工作.有任何想法吗?
@interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource>
@property (strong, nonatomic) IBOutlet UICollectionView *collectionView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[self.collectionView addSubview:refreshControl];
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 1;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
return [collectionView dequeueReusableCellWithReuseIdentifier:@"cCell" forIndexPath:indexPath];
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(self.view.frame.size.width, 100);
}
Run Code Online (Sandbox Code Playgroud) 我在我的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
UIScrollView我的应用程序中已有大约5个已加载多个.xib文件.我们现在想用一个UIRefreshControl.它们构建为与UITableViewControllers一起使用(根据UIRefreshControl类引用).我不想重新做所有5个UIScrollView工作.我已经尝试过使用UIRefreshControl我UIScrollView的,除了一些东西之外,它按预期工作.
在刷新图像变成加载器之后,UIScrollView跳跃大约10个像素,这只有在我非常小心地UIScrollview向下拖动时才会发生.
当我向下滚动并启动重装,然后让围棋UIScrollView,在UIScrollView那里我让它去住宿.重新加载完成后,UIScrollView跳转到顶部没有动画.
这是我的代码:
-(void)viewDidLoad
{
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[myScrollView addSubview:refreshControl];
}
-(void)handleRefresh:(UIRefreshControl *)refresh {
// Reload my data
[refresh endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以节省一大堆时间并使用UIRefreshControla UIScrollView?
谢谢!!!
有没有人有一个如何将新的实现UIRefreshControl到xcode 的简短示例.我有一个UITableViewController显示推文,希望能够下拉和刷新.
偶尔我的表视图将不会连接到要刷新的服务,在这种情况下,我不希望UIRefreshControl存在.
我在viewDidLoad中添加它后,我尝试在某些情况下隐藏它setEnabled:,setHidden:但似乎都没有效果.
在我的应用程序中,我使用刷新控件和集合视图.
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:[UIScreen mainScreen].bounds];
collectionView.alwaysBounceVertical = YES;
...
[self.view addSubview:collectionView];
UIRefreshControl *refreshControl = [UIRefreshControl new];
[collectionView addSubview:refreshControl];
Run Code Online (Sandbox Code Playgroud)
iOS7有一些令人讨厌的错误,当你向下拉集合视图并且在刷新开始时不释放你的手指时,垂直contentOffset移动20-30点向下,这导致丑陋的滚动跳跃.
如果你在外面使用刷新控件,表也有这个问题UITableViewController.但是对于他们来说,可以通过将您的UIRefreshControl实例分配给UITableView名为的私有属性来轻松解决_refreshControl:
@interface UITableView ()
- (void)_setRefreshControl:(UIRefreshControl *)refreshControl;
@end
...
UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:tableView];
UIRefreshControl *refreshControl = [UIRefreshControl new];
[tableView addSubview:refreshControl];
[tableView _setRefreshControl:refreshControl];
Run Code Online (Sandbox Code Playgroud)
但是UICollectionView没有这样的属性所以必须有一些方法来手动处理它.
objective-c uitableview ios uicollectionview uirefreshcontrol
长时间监听,第一次调用这里堆栈溢出.要温柔.
我在UITableView上实现UIRefreshControl来刷新表的数据.在其他拉动刷新实现中,刷新过程不会开始,直到用户的手指在拉动刷新距离内被抬起.UIRefreshControl似乎没有立即显示它.
我的UIRefreshControl初始化代码:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
Run Code Online (Sandbox Code Playgroud)
我的刷新:代码是相当基本的:
-(void)refresh:(id)sender {
(... refresh code ...)
[sender endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
如何延迟刷新:功能,直到用户从拉动中移开手指?
我有一个UITableViewController,我在其上设置了backgroundView.该控制器安装了UIRefreshControl.问题是,当我设置背景视图时,刷新控件是不可见的.如果我删除背景视图,我可以看到刷新控件.
难道我做错了什么?
uirefreshcontrol ×10
ios ×9
objective-c ×6
iphone ×3
uitableview ×3
ios6 ×2
xcode ×2
swift ×1
uiscrollview ×1
xamarin.ios ×1