2013-03-04 42 views
0

我有點困惑,我希望有人能爲我澄清的東西。 當我創建Universal Master Detail應用程序時,我注意到tableview方法didSelectRowAtIndexPath只處理IPad選擇。通用應用程序 - 主細節

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
    NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
    self.detailViewController.detailItem = object; 
} 
} 

有人可以告訴我在哪裏處理iPhone桌面視圖選擇。

由於提前, 添

回答

1
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 

正在檢查&只爲iPad添加數據,你還需要檢查iphone或刪除此檢查,以便它可以適用於所有設備

如果你想檢查IPhone然後使用這些方法之一

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 

if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPhone) 
0

您是否正在使用故事板?如果是這樣,那麼tableView:didSelectRowAtIndexPath:正在通過帶有標識符@「showDetail」的segue進行處理。

因此,在表視圖委託方法中不需要任何東西。

如果關閉的故事板,那麼你會得到:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     if (!self.detailViewController) { 
      self.detailViewController = [[OCDDetailViewController alloc] initWithNibName:@"OCDDetailViewController_iPhone" bundle:nil]; 
     } 
     self.detailViewController.detailItem = object; 
     [self.navigationController pushViewController:self.detailViewController animated:YES]; 
    } else { 
     self.detailViewController.detailItem = object; 
    } 
} 

負責處理iPhone和iPad的案件。

+0

感謝您的有用反饋。有沒有辦法在iPad上爲主細節添加一個seque,以便在iPad上處理選擇,就像它在iPhone上一樣? – 2013-03-05 01:41:36

+0

順便說一句,這整個問題涉及到我在後面的帖子中描述的問題。 http://stackoverflow.com/questions/15191554/ipad-vs-iphone-tableview-rows – 2013-03-05 01:50:13

+0

有沒有適合iPad的segue,因爲沒有轉換需要。細節視圖,因爲它已經可見。所有需要發生的事情都是爲了更新詳細視圖的數據。 – Ants 2013-03-05 02:15:02

0

謝謝大家的建議。事實證明,我在創建通用應用時選擇了核心數據,但是,我沒有正確使用核心數據。我現在已經利用了核心數據,並且一切正常。

相關問題