gpt4 book ai didi

ios - 将数据从 UITableViewCell 推送到 ViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:14 26 4
gpt4 key购买 nike

我正在尝试将数据从 UITableViewCell 推送到另一个 View Controller 。我尝试了两种不同的方法,instantiateViewControllerWithIdentifierPrepareForSegue。在这两种情况下,ViewController 都正确加载,但数据未被传递(null 或第一个数组值)。

这是我的 instantiateViewControllerWithIdentifier 方法,当我在 ViewController 中记录变量时,它只返回 null。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *testNumber = [jobNumberArray objectAtIndex:indexPath.row];
NSLog(@"Job is... %@",testNumber);
StandardInfoViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"StandardInfoViewController"];
controller.JobNr = [jobNumberArray objectAtIndex:indexPath.row];
[self.navigationController pushViewController:controller animated:YES];
}

准备继续

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"Details" sender: self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"Details"]){
StandardInfoViewController *controller = (StandardInfoViewController *)segue.destinationViewController;
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
controller.jobNumber = [jobNumberArray objectAtIndex:indexPath.row];
}
}

当我使用 prepareForSegue 调用时,我得到了数组的第一行,我理解这是因为它不知道单元格,但我不知道如何在 prepareForSegue 调用中识别单元格。

我希望这是有道理的,我们将不胜感激任何帮助或指点。

谢谢

最佳答案

如果您从 Storyboard 中的 tableView-cell 中拖动 segue,您将获得单元格本身作为参数发送者。

然后您可以使用 tableView indexPathForCell:sender 获取所选单元格的实际索引。然后只需正常获取您的对象即可。

即你将不需要实现didSelectRowAtIndexPath


如果您仍想使用 didSelectRowAtIndexPath,只需手动将单元格作为 sender 参数传递即可。即:

 [self performSegueWithIdentifier:@"Details" 
sender:[self.tableView cellForRowAtIndexPath:indexPath]]

尽管根据您的代码判断,带有 instansiateViewController 的第一个版本应该可以工作。


另一种模式是对单元格本身进行子类化,并让它们拥有一个属性,即它们要显示的对象。然后您可以直接从单元格中获取对象,而无需调用数据数组本身。

关于ios - 将数据从 UITableViewCell 推送到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com