2013-10-21 4 views
13

내가 (AN있는 UITableViewController없이) 그와 같은 UIRefreshControl를 사용하는 상위 삽입 보내기는 UIRefreshControl

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[self.table addSubview:refreshControl]; 

문제는 새로 고침 휠이 UINavigationController가의 반투명 바 (iOS7에) 아래에 위치합니다. StackOverflow에서이 문제에 대한 몇 가지 주제가 있습니다. 그리고 그들은 저에게 귀중한 해결책을 가져 오지 않았습니다.

내가 원하는 것은 내 UIRefreshControl의 y 위치를 예를 들어 80px 낮추는 것입니다.

참고 : 나는 UITableViewController 외부에서 UIRefreshControl을 사용하지 않는 것이 좋습니다. 그래서 그것에 대해 경고 할 필요가 없습니다.

+0

제 생각에 UITableView는 프로그래밍 방식으로 자동 레이아웃으로 설정되어 있습니다. (하지만 아무 관계가 없어야합니다.) – AncAinu

답변

27

.

새로 고침 컨트롤을 설정 한 다른 하위보기에두면됩니다.

UIView *refreshView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 0, 0)]; 
[self.table addSubview:refreshView]; 

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[refreshView addSubview:refreshControl]; 
+2

위와 같이 UIView 컨테이너에 하위 뷰로 UIRefreshControl을 추가하기 전에 컨테이너 UIView를 UITableView에 추가해야합니다. 나는 그 반대로했는데 실패했다. – pechar

+0

''UIRefreshControl은 UITableViewController''에 의해서만 관리 될 수 있습니다. @pechar notes 문제로 인한 것 같습니다. – SimplGy

0

UIViewController에있는 viewDidLoad이 추가보십시오 : 나는 솔루션, 그리 깨끗하고 아주 간단한을 찾았지만 매력처럼 작동

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
+0

작동하지만 ... 원하는 방식이 아니기 때문에 탐색 모음이 불투명하게되고 전체 테이블 아래로 제한됩니다. – AncAinu

관련 문제