通用应用程序 - Master Detail

时间:2013-03-04 23:46:58

标签: ios xcode tableview

我对某些事情感到有点困惑,我希望有人可以为我澄清一下。 当我创建一个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桌面视图的选择。

提前致谢, 添

3 个答案:

答案 0 :(得分:1)

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

正在检查&仅为Ipad添加数据,您还需要检查iphone或删除此检查,以便它可以适用于所有设备

如果您想检查iPhone,请使用以下方法之一

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 

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

答案 1 :(得分: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的情况。

答案 2 :(得分:0)

感谢大家的建议。事实证明,当我创建通用应用程序时,我选择了Core Data,但是,我没有正确使用Core Data。我现在已经利用了核心数据,一切正常。