2013-08-13 2 views
1

UITableController가있는 UIPopOverController가 있습니다. 모든 요소를 ​​초기화하고 popOver를 표시하려면 현재 UITable은 크기를 알지 못하므로 UIpopOver의 크기를 설정할 수 없습니다.UITableController에 맞게 UIPopoverController 크기를 조절하십시오.

또한 크기를 설정할 수있는 위치를 모르겠습니다. UIPopOver의 UITable는 그 크기가 (내가 cellForRowAtIndexPath 내부 해킹 시도 할 수 있습니다 알고 있지만

어떤 아이디어를 얻을 수있는이 같은 못생긴?

내가 * 방법을 didView을 정의하려고했으나 이후 그들의 없음 보기가 팝 오버 안에 있기 때문에 아마도 호출됩니다.

감사합니다.

답변

2

팝업을 표시하기 전에 [table reloadData]으로 전화하십시오. 그러면 테이블이 크기를 계산하게됩니다. 그런 다음 [table contentSize]을 사용하십시오.

또한 직접 테이블 크기를 계산할 수 있습니다. 데이터와 행/머리글/바닥 글의 높이를 알고 있다면 간단하게 곱셈을하면됩니다. &

+0

덕분에, 잘 작동하는, 나는 또한 테이블의 크기를 변경하거나이 팝 오버가 – user1794349

0

나는이 코드를 인터넷 어딘가에서 발견했다. 어디서나 내가 신용을 줄 것인지 확신하지 못한다. 그것은 완벽하게 작동하지만 (이것은 UITableViewController 서브 클래스에 있습니다). 그것은 컨트롤러의 너비를 테이블에 표시된 가장 넓은 줄보다 넓게 설정합니다 (내 경우에는 공개 표시기를위한 자리를 남겨 둡니다).

self = [super initWithStyle:style]; 
    if (self) 
    { 
     sortOrders = @[@"Alphabetic",@"User-assigned",@"Randomized"]; 
     selectedSortOrder = @"Alphabetic"; 
     // 
     // compute the size of the popover based on maximum width and required height to accommodate all rows 
     // 
     int rowHeight = [self.tableView.delegate tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
     int totalRowHeight = [sortOrders count] * rowHeight; 
     CGFloat maxWidth = 0.0f; 
     for (NSString *s in sortOrders) 
     { 
      CGSize labelSize = [s sizeWithFont:[UIFont systemFontOfSize:14.0f]]; 
      if (labelSize.width > maxWidth) 
       maxWidth = labelSize.width; 
     } 
     self.contentSizeForViewInPopover = CGSizeMake(maxWidth+50.0f, totalRowHeight); 
     [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; 
    } 
    return self; 
} 
+0

죄송로 성장할 수있는 최대보다 더 큰 있는지 확인했다, 나는이에 대한 질문의 요점을 놓친 생각 위의 - 내가 이것을 표시하기 위해 사용하는 popover는 다음과 같이 호출됩니다 : [[UIPopoverController alloc] initWithContentViewController : sortOverController]; 따라서 popover는 콘텐츠의 크기에 맞춰집니다. – RegularExpression

관련 문제