wzb*_*zon 4 uitableview uiscrollview ios
我正在使用PPRevealSideViewController.我有两个ViewControllers.中间的一个是SideSwipeTableViewController的子类,左边的是UIViewController的子类,里面有一个tableView.PPRevealSideViewController和SideSwipeTableViewController的示例应用程序都支持UITableView的scrollsToTop属性,至少对于PPRevealSideViewController中间的TableView而言.但是当我使用这两个类时,scrollsToTop停止工作.
我知道这是类似的问题,但我已经尝试了一切,我已阅读所有帖子,谷歌给了我这个问题,但仍然无法解决它.所以我决定在这里问一下,即使做什么也没有任何想法,让scrollsToTop工作.
self.window.rootViewController = self.revealSideViewController;
Run Code Online (Sandbox Code Playgroud)
哪里
- (PPRevealSideViewController *)revealSideViewController
{
if (! _revealSideViewController) {
_middleTableViewController = [MiddleTableViewController new];
UINavigationController *middleNavController = [[UINavigationController alloc] initWithRootViewController:_middleTableViewController];
_revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:middleNavController];
_revealSideViewController.delegate = self;
}
return _revealSideViewController;
}
- (void) preloadSidePanel
{
AppDel.systemTableViewController = [SystemTableViewController new];
AppDel.systemTableViewController.parent = self;
[self.revealSideViewController preloadViewController:AppDel.systemTableViewController
forSide:isLeftHanded ? PPRevealSideDirectionLeft : PPRevealSideDirectionRight
withOffset:_offset];
}
Run Code Online (Sandbox Code Playgroud)
我在这个systemTableViewController中设置了这个:
_tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
[self.view addSubview:_tableView];
_tableView.scrollsToTop = NO;
Run Code Online (Sandbox Code Playgroud)
但是,它没有帮助.
滚动到顶部仅当只有一个滚动视图(或滚动视图的任何子类.在您的情况下是表视图)时才可见.
即使有多个滚动视图可见,也只有一个应该设置此属性,然后才能使用它.
此外,如果委托在scrollViewShouldScrollToTop中返回NO,则它将不起作用.
随着以下小扩展UIView我解决了同样的问题.因为这些属性不仅存在于UITableView,而且还存在于UIScrollView祖先(例如UICollectionView)上.
@implementation UIView (UIViewPimp)
- (void) disableScrollsToTopPropertyOnMeAndAllSubviews {
if ([self isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)self).scrollsToTop = NO;
}
for (UIView *subview in self.subviews) {
[subview disableScrollsToTopPropertyOnMeAndAllSubviews];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
我在viewDidLoad-Method中调用这些新方法,然后设置所需UITableView显式的属性.
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view disableScrollsToTopPropertyOnMeAndAllSubviews];
self.myTableView.scrollsToTop = YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4371 次 |
| 最近记录: |