2016-10-24 4 views
0

나는 UITableView이 있으며 위 그림이 있습니다. 때로는 많은 콘텐츠가 있으므로이 헤더를 스크롤해야하고 (Facebook 앱과 같이) 아래로 스크롤하면 immediatelly로 표시되어야합니다. 그리고 나는 내 머리글을 새로 고치기 위해 당기려고했을 때 UITableView (내가 UITableViewHeader을 사용하면 UITableView와 함께 아래로 이동해야 함)보다 위에 있어야한다. 당신은 무엇을 조언 할 수 있습니까? 나는 정말로 갇혔다. 미리 감사드립니다.UITableView 상단에 UIView를 추가하십시오.

+0

체크 아웃이 LIB [TLYShyNavBar] (https://github.com/telly/TLYShyNavBar) – Tj3n

+0

나는 아래로 스크롤 할 때 늘 사라지고 있기 때문에 섹션 헤더 질문에서 가정하자? – Abdul91

+0

@ Abdul91 네, 맞습니다. –

답변

0
#pragama mark delegate UIScrollView 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    [self scrollViewAnimation:scrollView]; 

} 
-(void)scrollViewAnimation:(UIScrollView *)scrollView{ 


if (scrollView==YourtableViewName) { 
    [YourtableViewName layoutIfNeeded]; 
    if ([scrollView.panGestureRecognizer translationInView:scrollView.superview].y > 0) { 
     NSLog(@"Scrolling Up"); 
     [UIView animateWithDuration:0.25 animations:^{ 
      viewTop_topConstraint.constant = 0; 
      [self.view updateConstraintsIfNeeded]; 
      [self.view layoutIfNeeded]; 
     } completion:^(BOOL finished) { 
     }]; 

    } else if ([scrollView.panGestureRecognizer translationInView:scrollView.superview].y < 0) { 
     NSLog(@"Scrolling Down"); 
     if (dataArray.count>4) { 
      [UIView animateWithDuration:0.25 animations:^{ 
       viewTop_topConstraint.constant = -120; 
       [self.view updateConstraintsIfNeeded]; 
       [self.view layoutIfNeeded]; 
      } completion:^(BOOL finished) { 
      }]; 
     } 

    } 


} 
0

내가 원하는 것을 구현하기 위해 조금 노력했습니다. 그리고이 코드를 생각해 냈습니다. 그러나 너는 너 자신 약간 경미한 조정을해야 할지도 모르다. 방금 sectionHeight 변수를 60으로 설정하고이를 섹션 높이로 반환하는 데 사용했습니다. 이 변수를 viewDidLoad 또는 viewWillAppear 방법으로 60 (또는보기의 높이)로 설정해야합니다. 그리고 returnUIView 위의 UITableView 위에 표시하고 viewForHeaderInSection 방법으로 표시하려고합니다. 코드와 관련하여 혼란이 있으면 알려주십시오.

#pragma mark - TableView Data Source Events 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return 50; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *cellIdentifier = @"DeliveryPackageCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 


    cell.textLabel.text = @"1"; 

    return cell; 
} 

#pragma mark - TableView Delegate Events 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    return 60; 
} 

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,sectionHeight)]; 
    [view setBackgroundColor:[UIColor lightGrayColor]]; 
    return view; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return sectionHeight; 
} 

#pragma mark - Srcoll View Delegates 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    self.initialContentOffset = scrollView.contentOffset.y; 
    self.previousContentDelta = 0.f; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGFloat prevDelta = self.previousContentDelta; 
    CGFloat delta = scrollView.contentOffset.y - self.initialContentOffset; 
    if (delta > 0.f && prevDelta <= 0.f) { 
     // started scrolling positively 

     if(sectionHeight != 0) 
     { 
      sectionHeight = 0; 
      [tableView reloadData]; 
     } 



    } else if (delta < 0.f && prevDelta >= 0.f) { 
     // started scrolling negatively 
     if(sectionHeight == 0) 
     { 
      sectionHeight = 60; 
      [tableView reloadData]; 
     } 

    } 
    self.previousContentDelta = delta; 
} 
+0

답장을 보내 주셔서 감사합니다. 그러나 스크롤 할 때 정말 나빠요. 많은 테이블이 새로 고칩니다. 그리고 일부 스크롤 응용 프로그램 충돌 후. –

+0

흠, 메모리로 인해 응용 프로그램이 다운 되었습니까? 위 표는 각 방향이 변경된 후에 한 번만 다시로드됩니다. 이것은 사실이 아니어야합니다. – Abdul91

+0

그리고 코드 헤더에서 천천히 스크롤되지 않았습니다. Immediatelly dissapears. :( –

관련 문제