한 화면에 두 개의 테이블을 만들고 싶기 때문에 테이블 A를 아래로 스크롤하면 테이블 B가 동시에 위로 스크롤됩니다. 누군가 코드를 작성하거나 그렇게 할 수있는 쉬운 방법을 제공 할 수 있습니까?한 화면에 두 개의 UITableView가 있습니다.
답변
우바 오 언급했듯이 UIScrollViewDelegate
을 사용해야합니다. 그러나 당신은 현재 어떤 scrollView가 드래그/활성화되어 있는지 확인해야합니다. else를 사용하면 스크롤 뷰에서 위임 콜백을 가져오고 동시에 서로에게 변경 사항을 적용하여 끝없이 반복되는 순환/끝없는 스크롤이 발생하는 문제가 발생합니다. - (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를 만들어야합니다.
pls 약간의 코드를 제공 할 수 있습니다. ab. – turtle
편집 : 코드 예제 추가 (테스트 안 함) – calimarkus
감사합니다 jaydee ... 나는 그것을 자체적으로 구현하려고합니다 ... 성공적으로 실행할 수 있는지 알려 드리겠습니다. – turtle
UITableView
은 UIScrollView
에서 파생되므로 하나의 테이블보기의 viewDidScroll
대리자 메서드를 사용하여 다른 테이블보기 스크롤 위치를 제어 할 수 있습니다.
- 1. 한 화면에 두 개의 그래픽이 있습니다.
- 2. 한 화면에 세 개의 목록보기가 있습니다.
- 3. 두 개의 개별 화면에 두 개의 창로드
- 4. 화면에 여러 개의 ViewControllers가 있습니다.
- 5. 화면에 두 개의 창 결합하기
- 6. 한 화면에 여러 개의보기가 있습니다.
- 7. 두 개의 키보드를 화면에 표시하는 방법
- 8. CSS : 두 개의 div 열, 한 개의 스티커가 붙어 있습니다.
- 9. 하나의 화면에 두 개의 movieviewcontroller보기가 사라질 때
- 10. BlackBerry의 단일 화면에 두 개의 막대가 나타납니다.
- 11. Android Gallery 한 화면에 두 개의보기를 표시하는보기.
- 12. 두 개의 서로 다른 관계가있는 두 개의 리소스가 있습니다.
- 13. 두 개의 루프가 섞여 있습니다.
- 14. ActiveRecord에는 두 개의 연관이 있습니다.
- 15. ipad 두 개의 UITableView가 서로 연결되는 데이터 소스를 사용합니다.
- 16. UITableView가 있고 두 개의 UIButtons가있는 테이블 뷰 데이터 소스
- 17. Scanf가 한 번에 두 개의 문자열을 요청하고 있습니다.
- 18. 두 개의 컨트롤러가 레일에서 한 번에 볼 수 있습니다.
- 19. bash 스크립트에서 한 번에 두 개의 대화 상자가 있습니다.
- 20. UItableView가 두 번째로로드 한 후에 데이터를 새로 고치지 않습니다.
- 21. 두 개의 다른 페이지에 두 개의 텍스트 상자가 있습니다.
- 22. 두 개의 쿼리와 두 개의 내부 조인이 있습니다.
- 23. 두 개의 레이아웃 /보기가 하나 인 두 개의 레코드가 있습니다.
- 24. 두 개의 양식, 한 페이지
- 25. javascript는 동일한 렌더링 화면에 여러 개의 양식이 있습니다.
- 26. 두 개의 중심, 한 개의 주변 장치
- 27. 동일한 iOS 화면에 동시에 두 개의 비디오를 표시하십시오.
- 28. 한 페이지에 두 개의 양식
- 29. 한 번의 클릭으로 두 개의 기능을 수행합니다.
- 30. 한 화면에 3 가지 활동보기
정확히 무엇을 원하는 설명 할 수 있습니다, 그래서 우리는 당신에게 적절한 해결책을 줄 수 있습니다. – Rupesh