0

编辑:我已经解决了这个问题。更正了代码以显示此修复程序。

我有一个使用 UITableViewController 的应用程序,它显示所有 50 种状态的列表,按字母顺序分成多个部分。我已将详细信息披露按钮添加到情节提要的原型单元格中,并且表格显示了所有正确的信息。

当我按下单元格上的按钮时,它应该转到新的 viewController 并显示状态名称作为视图标题,然后在视图中显示车牌图片。

我使用 -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 方法来控制按钮按下,然后我使用 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id) sender 来控制传递给新 viewController 的值。

我遇到的问题是,当我按下详细信息披露按钮时,什么都没有通过。NSLogging 新 viewController 中的值输出 (null), (null) 并且视图没有标题或图片。但是,当我按回然后再次按同一个单元格的详细信息披露按钮时,它的工作原理就像它应该的那样。标题正确,图片显示正确。

当我选择另一个单元格时也是如此,viewController 显示最后发送的信息,我必须按下回然后再次选择单元格以更新。第一次选择不同的单元格时, (null, (null) 是 NSlog 输出的内容。所以我相信发生的事情是第一次按下详细信息披露按钮时,没有传递任何值,但第二次它被按下,值正在被传递。

以下是相关代码:

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    //Don't even use this method now.
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UITableViewCell *cell = (UITableViewCell*)sender;  //Added this line
self.path = [self.tableview indexPathForCell:cell]; //Added this line

if ([segue.identifier isEqualToString:@"stateSegue"])
    {
        self.controller = segue.destinationViewController;
        self.controller.stateName = [self.stateArray[indexPath.section][indexPath.row]stateName];
        self.controller.licensePlateURL = [self.stateArray[indexPath.section][indexPath.row]licensePlateURL];
    }
}

对此的任何帮助将不胜感激。

4

1 回答 1

0

检查哪个方法首先触发。也许您在执行 segue 后设置属性。

没有关于您如何(何时)执行 segue 的信息。

您可以将此行添加到您的 accessoryButton 方法中:

[self performSegueWithIdentifier:yourIdentifierFromStoryboard sender:self];
于 2013-10-11T20:56:06.310 回答