4

如何将对象从详细信息公开点击传递到详细信息视图控制器?对此有什么建议或快速修复吗?理想情况下,我想创建一个这样的方法:

[self performSegueWithIdentifier:@"showDetail" sender:self passObject:object];

原因是“准备继续”似乎只有在我在详细信息披露指示器之前按下单元格时才会被调用。我将如何创建像上面这样的方法来创建下面准备的效果?

if ([[segue identifier] isEqualToString:@"showDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    id object = [_objects objectAtIndex:indexPath.row];
    [[segue destinationViewController] setDetailItem:object];
}

我已经尝试像这样创建 UIStoryboardSegue 的子类,但遇到了两个问题。

@implementation masterToDetail
-(void)performSegueWithIdentifier:(NSString*)identifier sender:(id)sender passObject:(id)object{
    [self.destinationViewController setDetailItem:object];
    [self performSegueWithIdentifier:identifier sender:sender];
}

-(void)performSegueWithIdentifier:(NSString*)identifier sender:(id)sender{
 //What code should go here? Issue one   
}

-(void)perform{
    //Second issue, the compiler will crash and say I need to override perform.
}
4

3 回答 3

4

我通过完全放弃 segue idea 的子类解决了这个问题。我删除了自定义 segue 并将推送 segue(从 tableviewcontrollre)到我的详细视图控制器。然后我创建了一个实例变量NSIndexPath* _ipath;,我的代码如下:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
    _ipth = indexPath;
    [self performSegueWithIdentifier:@"showDetail" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSLog(@"prepping");
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        NSLog(@"in if");
        id object = [_objects objectAtIndex:_ipth.row];
        [[segue destinationViewController] setDetailItem:object];
    }
}

这让我们为 segue 做好准备,为正确的单元格工作。

于 2012-06-25T21:26:50.340 回答
1
  1. 打开故事板

  2. 选择主视图控制器 - 主

  3. 从 UITableViewCell 选择 Segue 到 Detail View Controller - Detail

  4. 打开属性检查器

  5. 标识符 -> masterToDetail 写入

于 2012-07-27T02:49:43.663 回答
0

您可以简单地右键单击表格视图单元格,然后从辅助操作中按住 ctrl-drag。

于 2014-07-16T19:46:47.237 回答