我在导航栏和标签栏之间放置了一个表格视图,并希望仅为表格视图部分实现滚动(换句话说,在我的iOS模拟器中,我希望始终可以看到两个小节点,我应该可以在它们之间滚动我的表视图。)
从SO帖子中尝试了各种建议后,我担心还会出错。你能告诉我如何解决这个问题 - 过去1天我一直在努力解决这个问题!
在表视图控制器的viewDidLoad中,我使用以下代码。之前,我也试过单独初始化一个滚动视图但是理解表视图是一个滚动视图的子类,所以抛弃了那个路径......
- (void)viewDidLoad
{
[super viewDidLoad];
// To remove extra separators from the table view to prevent blank rows from showing.
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
// ***** Scroll view implementation *****
[[self tableView] setFrame:CGRectMake(0, self.navigationController.navigationBar.frame.size.height, self.view.frame.size.width, self.view.frame.size.height - self.navigationController.navigationBar.frame.size.height - self.tabBarController.tabBar.frame.size.height)];
[[self tableView] setContentSize:CGSizeMake(self.view.frame.size.width, 2000)];
[self setEdgesForExtendedLayout:UIRectEdgeNone];
self.automaticallyAdjustsScrollViewInsets = YES;
}
事实上,为了进一步测试,我在一个单独的选项卡中创建了一个滚动视图(在这个tabbarcontroller应用程序中),到目前为止我只有一个导航栏和一个标签栏(没有表视图)。它的viewDidLoad看起来像这样 - 不知怎的,那里也没有运气......滚动条从屏幕顶部开始(而不是从导航栏的底部)直到屏幕的底部(而不是直到标签栏的顶部)。很明显,我在这里做了一些概念错误的事情......如果你能帮帮忙,请欣赏!这里输入的数字是试验性的,但是我确保内容大小比滚动视图框架大......
- (void)viewDidLoad
{
[super viewDidLoad];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 300)];
[scrollView setContentSize:CGSizeMake(self.view.frame.size.width, 1500)];
[self.view addSubview:scrollView];
[self setEdgesForExtendedLayout:UIRectEdgeNone];
self.automaticallyAdjustsScrollViewInsets = NO;
[scrollView setScrollEnabled:YES];
}
最后,当我在模拟器中调试我的应用程序时,奇怪的是,对于表格视图选项卡,滚动条会立即显示从导航栏下方开始。但是当我触摸跟踪板滚动时,它就会消失,并且会出现一个更突出的滚动条,从屏幕顶部开始到屏幕底部,正如我上面提到的那样!
答案 0 :(得分:0)
我认为我发现了潜在的错误。不仅仅是一个实现错误,我错过了一个非常基本的问题......
总之,iOS模拟器通常总是具有比计算机屏幕更高的分辨率/像素数,无论如何,除非手动调整大小,否则模拟器总是会超出计算机屏幕。所以滚动条通常会一直存在。 This SO帖子帮助我理解了它。
另一方面,UIScrollView自动已经在我的表视图中实现,因为UITableView是UIScrollView的子类 - 我没有做任何事情。我用一个'光线滚动模拟器。双触,由于上面提到的问题,它带我到滚动条。如果我点击了hard'然后滚动,然后瞧!所需的UIScrollView确实按预期正常工作!这可能是误导我在问题中提到这些陈述的原因......!
最后,当我在模拟器中调试我的应用程序时,奇怪的是,对于表格视图选项卡,滚动条确实会立即从导航栏下方开始显示。但是当我触摸跟踪板滚动时,它就会消失,并且会出现一个更突出的滚动条,从屏幕顶部开始到屏幕底部,正如我上面提到的那样!