gpt4 book ai didi

iphone - 执行 segue 时未加载下一个 View Controller

转载 作者:行者123 更新时间:2023-12-01 19:22:03 25 4
gpt4 key购买 nike

我对 Storyboard的东西还是陌生的。我花了两天时间调试这个问题。当 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 出现时,segue 的目标 View Controller 似乎无法正常工作。叫做。

我有一个表格 View ,当点击一个单元格时,它需要一个 segue

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
VAItem *item = [category itemAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"SegueShowDetail" sender:item];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"SegueShowDetail"]) {

VADetailViewController *detailViewController = segue.destinationViewController;
detailViewController.item = (VAItem*) sender; // <-- THIS ASSIGNMENT DOES NOT WORK
}
}

我的调试显示, item正确传递给 prepareForSegue但是 detailViewController.item是一个野指针。它没有初始化, =赋值没有任何作用。

我在 VADetailViewController 的 viewDidLoad 中放了一个断点并发现 item即使分配已经发生,变量仍然是野指针地址。
@interface VADetailViewController : UIViewController
// data
@property (nonatomic, retain) VAItem *item;
@end

项目也正确合成。

任何帮助深表感谢

狮子座

最佳答案

如果您使用 Storyboard 转场过渡到下一个 View Controller ,则无需使用 tableVeiew:didSelectRowAtIndexPath:在这个情况下。取决于你如何设置可能导致问题的东西。

在你的 Storyboard中,确保你已经从 tableview 的 Prototype Cell 绘制了 push segue 到详细 View Controller (即从单元格, NOT 从 tableViewController)。如果您以这种方式设置 Storyboard,则只要用户选择一个单元格,就会触发您的 segue。对单元格本身的引用将传递给 prepareForSegue:sender:作为 sender范围。然后,您可以检查该对象以找出在该方法中单击了哪一行。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"SegueShowDetail"]) {

// sender will be the tableview cell that was selected
UITableViewCell *cell = (UITableViewCell*)sender;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

VAItem *item = [category itemAtIndex:indexPath.row];

VADetailViewController *detailViewController = segue.destinationViewController;
detailViewController.item = item;
}
}

关于iphone - 执行 segue 时未加载下一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866408/

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