31

我已经尝试了好几个小时,但没有任何效果。我试图在两个视图控制器之间进行切换,从一个 tableViewController 到另一个 tableViewController。segue 连接到顶层视图,而不是 tableviewcell。Xcode 中设置的标识符与代码中使用的标识符相同(复制和粘贴)。昨晚它工作得很好,但现在我似乎无法让它在不崩溃的情况下继续运行。

以下是调用 segue 的方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    self.photoList = [FlickrFetcher photosInPlace:[self.topPlacesList objectAtIndex:indexPath.row] maxResults:50];
    NSLog(@"photolist %@", self.photoList);

    NSLog(@"here");

    [self performSegueWithIdentifier:@"segue1" sender:self];
    NSLog(@"here");
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"segue1"])
    {
        PhotosTableViewController *photosTVC = segue.destinationViewController;
        photosTVC.photoList = self.photoList;
    }
}

这是错误报告

2012-08-08 15:28:39.093 Top Places[512:f803] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“接收者(PlacesTableViewController:0x6887ff0)没有标识符为“segue1”的segue *第一次抛出调用堆栈:( 0x13c0052 0x1551d0a 0xde24b 0x3efd 0xa771d 0x7952 0x112f86d 0x1394966 0x12f77c0 0x12f77c0 0x12f6db4 0x12f6ccb 0x12a9879 0x12a9930 0x12a993e 0x12a9930 0x12a9930 0x12a9930 0x12a993e 0x12a9a9b 0x12778 0x17a9b 0x2778 0x26d5)终止称为抛出异常

这是情节提要的截图 http://s14.postimage.org/66wf13q4h/Screen_Shot_2012_08_08_at_3_22_10_PM.png

4

8 回答 8

50

我可以通过在 Xcode 的“产品”菜单下运行“清洁”并重置模拟器中的内容和设置来修复它。

于 2013-04-14T20:41:38.877 回答
6

我有同样的问题。在我的初始化程序- (id)initWithCoder:(NSCoder *)aDecoder中,我正在做self = [super init];我应该做的事情self = [super initWithCoder:aDecoder];。当我解决这个问题时,一切都按预期工作。

于 2014-05-12T00:16:48.927 回答
4

我遇到了同样的问题,并为此苦苦挣扎了好几个小时。Stackmonster 的回答解决了我的问题(重命名情节提要),但我不明白为什么它解决了问题。

我发现当我更改情节提要上的项目(添加标签或更改背景颜色)时,它并没有反映在模拟器中 - 我没有使用我可以在 xcode 中看到的情节提要,而是情节提要的旧版本。我不得不在项目导航器中重命名故事板,并在info.plist(在支持文件中)重命名它,我的标签出现了,背景颜色应用了,segue 起作用了。

我不知道为什么故事板的更改没有生效,但这让我花了很多时间去寻找。我在博客上看到很多开发人员都有同样的问题。

于 2012-10-15T21:40:14.053 回答
3

我修好了它!1. 确保在 Xcode 中选择了正确的故事板(如果您重命名故事板,请在项目摘要中更改它)。然后删除模拟器上的应用程序并重新启动

于 2012-12-30T08:45:54.060 回答
0

在 Interface Builder 中,您需要设置segue1连接到视图控制器的 segue 标识符。

于 2012-08-08T23:16:46.807 回答
0

我尝试了列出的所有内容,但没有运气。有效的是为新视图创建一个新的转场,然后使用那个,运行它,然后创建一个转回旧视图的转场。

于 2013-09-19T00:33:59.900 回答
0

在展开 segue 时遇到了这个问题。终于意识到,当我更换情节提要上的视图控制器时,我丢失了我的标识符。我通过单击文档大纲(情节提要的侧边栏)中的展开转场重新添加它,然后在属性检查器中为其添加标识符。

如果没有其他方法,至少在放松转场方面,您可以致电

[self dismissViewControllerAnimated:YES completion:nil];
于 2014-08-28T20:57:30.953 回答
0

当我将新的 VC 作为另一个视图控制器的子类时,我遇到了同样的问题。它应该是 UIViewController 或 UITableViewController 的子类。检查头文件是否正在导入 UIKIT。

于 2017-02-07T16:48:21.857 回答