我想在单个屏幕上制作两个表格,这样如果表格A向下滚动,则表格B同时向上滚动。有人可以编码或为我提供任何简单的方法来做到这一点。单个屏幕上的两个UITableView
回答
正如吴宝提到的那样,您必须使用UIScrollViewDelegate
。但是你必须检查一下,哪个scrollView在拖动/活动。因为否则你会遇到这样的问题,即你将从这两个滚动视图中获得委托回调,并且它们将同时给予彼此的更改,导致无限循环/无限滚动。
详细,你必须检查:- (void)scrollViewDidScroll:(UIScrollView *)scrollView
但是你要记住以前的偏移,这样你就知道值的变化。 (或者你的观点具有相同的高度。然后你可以只使用contentSize.height-offset
作为其他视图偏移
我会尽量把它写下来一点点(未经测试):
@interface ViewController() <UITableViewDelegate,UIScrollViewDelegate>
// instances of your tableviews
@property (nonatomic, strong) UITableView *tableLeft;
@property (nonatomic, strong) UITableView *tableRight;
// track active table
@property (nonatomic, strong) UIScrollView* activeScrollView;
// helpers for contentoffset tracking
@property (nonatomic, assign) CGFloat lastOffsetLeft;
@property (nonatomic, assign) CGFloat lastOffsetRight;
@end
@implementation ViewController
- (void) viewDidLoad
{
[super viewDidLoad];
self.tableLeft.delegate = self;
self.tableRight.delegate = self;
}
– (void) scrollViewWillBeginDragging: (UIScrollView*) scrollView
{
self.activeScrollView = scrollView;
self.tableViewRight.userInterActionEnabled = (self.tableViewRight == scrollView);
self.tableViewLeft.userInterActionEnabled = (self.tableViewLeft == scrollView);
}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if(!decelerate) {
self.activeScrollView = nil;
self.tableViewRight.userInterActionEnabled = YES;
self.tableViewLeft.userInterActionEnabled = YES;
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
self.activeScrollView = nil;
self.tableViewRight.userInterActionEnabled = YES;
self.tableViewLeft.userInterActionEnabled = YES;
}
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
if(self.activeScrollView == self.tableViewLeft)
{
CGFloat changeLeft = self.tableViewLeft.contentOffset.y - self.lastOffsetLeft;
self.tableViewRight.contentOffset.y += changeLeft;
}
else if (self.activeScrollView == self.tableViewRight)
{
CGFloat changeRight = self.tableViewRight.contentOffset.y - self.lastOffsetRight;
self.tableViewLeft.contentOffset.y += changeRight;
}
self.lastOffsetLeft = self.tableViewLeft.contentOffset.y;
self.lastOffsetRight = self.tableViewRight.contentOffset.y;
}
@end
这就是它基本上它也锁定不活动的滚动视图因为滚动都会导致丑陋的行为contentOffset.y += changeLeft;
可能不会工作你必须创建一个新的CGPoint/CGSize
你能否提供一些代码..很难gr ab .. – turtle 2012-03-21 13:23:11
编辑:添加代码示例(未测试) – calimarkus 2012-03-21 14:16:46
感谢jaydee ...我试图通过我自己来实现它..如果我能够成功运行它,将通知您。 – turtle 2012-03-21 16:10:34
UITableView
是从UIScrollView
派生的,所以可以使用一个表视图的viewDidScroll
委托方法,来控制其他表视图的滚动位置。
- 1. 在两个单独的屏幕上加载两个窗口
- 2. 两个窗口全屏在两个不同的屏幕上
- 3. 在一个视图上的两个单独的屏幕
- 4. 在同一屏幕上的两个tableviews
- 5. 在两个屏幕(双屏监视器)上最大化表单
- 6. 在屏幕上组合两个窗口
- 7. C#单击屏幕上的某个点
- 8. 两个屏幕切换xrandr
- 9. iPad - 在同一屏幕上的多个UITableView
- 10. 两个Tablew在一个屏幕
- 11. 在一个屏幕上绘制两个正弦波的乘法
- 12. 单个UIViewController中的两个UITableView问题
- 13. 如何确定一个UITableView的最后一个单元格是屏幕
- 14. 在BlackBerry上从一个屏幕切换到另一个屏幕
- 15. 如何在一个屏幕上播放两个视频?
- 16. 在屏幕上随机移动两个或多个对象
- 17. 使用两个表显示在一个屏幕上
- 18. 在同一个iOS屏幕上同时显示两个视频
- 19. ffmpeg:同时捕捉两个屏幕,保存为两个单独的文件
- 20. 将主页屏幕分割为两个屏幕
- 21. 如何创建两个屏幕的Android菜单?
- 22. 以整个屏幕的屏幕截图
- 23. 跨两个屏幕拉伸WPF窗口
- 24. UITableView无数据屏幕
- 25. 同时在屏幕上有两个相同的节点Swift SpriteKit
- 26. Sikuli检查屏幕上出现两个不同的图像
- 27. 同一HTML5全屏幕上的两个内联框架
- 28. 如何在两个屏幕上设置课程的验证?
- 29. 在同一屏幕上与两个视图模型的淘汰
- 30. 同时在一个屏幕上运行的两种布局
你能解释你到底想做什么,所以我们可以给你适当的解决方案。 – Rupesh 2012-03-21 12:56:55