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 表格视图选择。

在此先感谢,蒂姆

4

3 回答 3

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

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

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

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 

或者

if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPhone)
于 2013-03-04T23:49:14.253 回答
0

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

于 2013-03-05T23:53:17.490 回答
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 的情况。

于 2013-03-04T23:54:56.713 回答