我有一个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
未及时更新。
是否有其他方法可以在任何方法中访问所选行而不将其发送到变量?
答案 0 :(得分:0)
在设置self.indexPathInt之前,您可能正在调用[self performSegueWithIdentifier ...]。
如果您通过故事板执行segue,那么您所解释的内容将会发生。在设置self.indexPathInt之后切换到以编程方式调用[self performSegueWithIdentifier]
干杯。
答案 1 :(得分:0)
如果直接从行直接从行调用segController,则在didSelectRowAtIndex路径之前调用prepareForSegue。
编辑:
将您的segue从ViewController拖到目标,而不是从ROW。
按照您通常的
在didSelectRowAtIndexPath中设置要设置的变量
在设置变量后调用didSelectRowAtIndexPath:
[self performSegueWithIdentifier:@“yourSegueIdentifierString”sender:self];