如何将数据从MasterView发送到DetailView

时间:2013-10-18 11:21:44

标签: objective-c detailview

在我的应用程序中,我在UIListView上显示了一个对象列表。 (MasterViewController.m)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    ObrasData *obra = [self.arrObras objectAtIndex:indexPath.row];
    cell.textLabel.text = obra.descripcion;
    return cell;
}

我试图显示来自对象的所有数据,在这种情况下,我只加载一个字段来测试应用程序。 (DetailViewController.m)

- (void)configureView
{
    // Update the user interface for the detail item.

    if (self.detailItem) {
        self.NombreObra.text = [self.detailItem description];
    }
}

当我进入DetailView时,我在标签中得到以下文字 - >

<ObrasData: 0x892b4b0>

那么,从对象加载所有数据的最佳方法是什么?这是我加载数组的地方:

   ObrasData *obra1 = [[ObrasData alloc] initWithID:[NSNumber numberWithInt:1] presupuesto:@"100" description:@"obra de prueba" aasm_state:@"En proceso" clienteID:@"dm2"];

    NSMutableArray *arrObras = [NSMutableArray arrayWithObjects:obra1, nil];
    UINavigationController *navController = (UINavigationController *) self.window.rootViewController;
    MasterViewController *masterController = [navController.viewControllers objectAtIndex:0];
    masterController.arrObras = arrObras;

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

“description”是NSObject上的一个方法,它返回一个对象的文本描述,你所看到的是默认实现(只打印地址)。

这意味着您没有实现覆盖“description”的方法来返回其他内容。

如果没有看到ObrasData的实现情况,很难为您提供更多指导。

编辑,看过实现后我看到你有一个名为“descripcion”的属性(用西班牙语),你在init方法中初始化。我假设你真的想要这样做:

[self.detailItem descripcion]

另一方面,如果你确实想要描述整个对象,那么你需要覆盖描述方法,例如。

- (NSString *)description
{
  return [NSString <create your description yourself here>];
}