2011-03-29 61 views
0

的自轉autoresizes其小區(溶液注意,不是一個問題,我會立刻回答)設置具有頁細胞一個UITableView和由設備

UITableViewController被自動轉動,其UITableView自動調整大小,但它的單元格不會調整大小,甚至在旋轉後錯誤地定位。

特別是在尋呼的情況下,情況更糟。您可以將pagingEnabled設置爲YES,並將單元格的高度設置爲[UITableView bounds].size.height以顯示分頁。然而在UITableView自動旋轉之後,所有的事情都搞砸了。

我怎樣才能使這些單元格自動調整表視圖旋轉?

回答

5

這樣做一個UITableViewController。核心概念是旋轉前的beginUpdate,旋轉後的endUpdate。只有這些,單元格的自動調整大小將自動完成。但是,他們的定位不會。所以我添加了一個手動滾動到特定的位置。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return [tableView bounds].size.height; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return YES; 
} 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [[self tableView] beginUpdates]; 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
} 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; 
    [[self tableView] endUpdates]; 

    // We have to specify an position to scroll to explicitly and manually 
    // becase current page number is no determinable especially if user rotate device continually. 
    NSIndexPath* indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 

    [[self tableView] scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 

- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 

    [[self tableView] setPagingEnabled:YES]; 
} 
+0

偉大的+1與我們分享您的解決方案.. – Jhaliya 2011-03-29 08:11:00

相關問題