2011-08-05 27 views
2

我在didSelectRowAtIndex使用此碼。在我的iPhone上,它推動了一個視圖,在iPad上,我希望它能在一個小的彈出窗口中呈現模態視圖。出於某種原因,在我的iPad上顯示模式,但它仍然是全屏,而不是一個小模式彈出。所以if語句正在工作,並且我使用類似的東西來在其他地方呈現導航控制器,並且它工作正常。iPad Modal Form查看不是

任何想法?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (NSClassFromString(@"UISplitViewController") != nil && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
     self.navigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
     self.navigationController.modalPresentationStyle = UIModalPresentationFormSheet; 
     [self.navigationController presentModalViewController:detailViewController animated:YES]; 
     [detailViewController release]; 
    } 
    else 
    { 
     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
     [self.navigationController pushViewController:detailViewController animated:YES]; 
     [detailViewController release]; 
    } 
} 

回答

5

您在錯誤的對象上設置了modalTransitionStyle和modalPresentationStyle。你應該在detailViewController而不是self.navigationController上設置它們。

編輯:這裏是導航欄沿完整的代碼爲已完成按鈕,將關閉該模式的看法:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
navController.modalPresentationStyle = UIModalPresentationFormSheet; 

UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                       target:self 
                       action:@selector(modalViewDone)]; 
detailViewController.navigationItem.rightBarButtonItem = doneBarButton; 
detailViewController.navigationItem.title = @"Details"; 
[doneBarButton release]; 

[self.navigationController presentModalViewController:navController animated:YES]; 
[detailViewController release]; 
[navController release]; 

而且你需要實現這個方法:

- (void)modalViewDone 
{ 
    [self.navigationController dismissModalViewControllerAnimated:YES]; 
} 
+0

謝謝,我這樣做,但現在沒有導航欄的navbutton解僱它。什麼是最好的方式來添加這個?我應該製作一個新的detailViewController xib嗎?因爲在iPhone上,detailview只是被推到導航堆棧上,所以後退按鈕就會自動出現。 – Jon

+0

我已經用您需要的完整代碼更新了我的答案,請看上面的表格。 –

+0

謝謝!這很好用! – Jon