didSelectRowAtIndex未正确更新

时间:2014-10-01 09:49:38

标签: ios objective-c uitableview didselectrowatindexpath

我有一个TableView,其中我有行,其标题包含属性的名称。

属性在另一个TableView上定义,我可以按下"添加"将新创建的Object添加到First TableView。

如果我现在要编辑,让我们说列表中的第二个对象,我必须按它(切换到第二个TableView)按取消并再按一次,以获得正确的名称。

didSelectRowAtIndex的某些内容似乎无法正常工作,但我无法弄清楚它是什么。

这是我的方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    self.indexPathInt = (int)indexPath.row;
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:kSegueIdentifier]){

        AddEntry *controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

        controller.delegate = self;
    }

    if ([[segue identifier] isEqualToString:kEditSegueIdentifier]) {

        edited = YES;

        AddEntry *controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

        EntryObject *entry = self.entryObjectArray[self.indexPathInt];

        controller.name = entry.name;
        controller.someProperty = entry.soneProperty;


        controller.delegate = self;
    }
}

如果我在indexPathInt方法中记录PrepareforSegue,它与indexPath.row方法中的DidSelectRowAtIndex不一样,而是我之前点击的那个

因此indexPathInt未及时更新。

是否有其他方法可以在任何方法中访问所选行而不将其发送到变量?

2 个答案:

答案 0 :(得分:0)

在设置self.indexPathInt之前,您可能正在调用[self performSegueWithIdentifier ...]。

如果您通过故事板执行segue,那么您所解释的内容将会发生。在设置self.indexPathInt之后切换到以编程方式调用[self performSegueWithIdentifier]

干杯。

答案 1 :(得分:0)

如果直接从行直接从行调用segController,则在didSelectRowAtIndex路径之前调用prepareForSegue。

编辑:

  • 将您的segue从ViewController拖到目标,而不是从ROW。

  • 按照您通常的

  • 命名segue
  • 在didSelectRowAtIndexPath中设置要设置的变量

  • 在设置变量后调用didSelectRowAtIndexPath:

    [self performSegueWithIdentifier:@“yourSegueIdentifierString”sender:self];