我对某些事情感到有点困惑,我希望有人可以为我澄清一下。 当我创建一个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桌面视图的选择。
提前致谢, 添
答案 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。我现在已经利用了核心数据,一切正常。