0

我有一个 tableview,我创建了一个 segue 将它推送到另一个视图控制器。我可以保证,每隔一段时间,这个转场就会在我不碰它的情况下中断。我什至没有编辑我放入的文件。

我的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *acell = [tableView cellForRowAtIndexPath:indexPath];
    [self performSegueWithIdentifier:@"cellWasSelected" sender:acell];
}



- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"cellWasSelected"])
    {
        if ([sender isKindOfClass:[UITableViewCell class]])
        {
            UITableViewCell *selectedCell = sender;
            ViewController *myDetViewCont = segue.destinationViewController;
            myDetViewCont.navigationItem.title = selectedCell.textLabel.text;
        }
    }
}

首先,单击单元格后,xcode 会将我定向到此 segue 推送到的文件。它把我重定向到这里:action:@selector(handleSingleTap:)]; 我用这个来触发我的图像:[self.navigationController popToRootViewControllerAnimated:YES]

如果我在线程 1 中选择我的主要视图,我看到的问题是:

[self performSegueWithIdentifier:@"cellWasSelected" sender:acell];

但是我用了几千次的问题是什么,它开始崩溃而我没有改变它。

4

1 回答 1

4

您的代码没有任何错误,问题出在其他地方。可能是您没有在界面生成器中给 segue 一个标识符。试试这个代码。它在我这边工作,如果您的文件没有任何问题,它也应该在您这边运行。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSString* identifier = [segue identifier];

if ([identifier isEqualToString:@"cellWasSelected"]) {
    NSLog(@"Performing Seque");

    if ([sender isKindOfClass:[UITableViewCell class]]) {
        NSLog(@"correct");
        UITableViewCell *selectedCell = sender;
        UIViewController* myDetViewCont = segue.destinationViewController;
        myDetViewCont.navigationItem.title = selectedCell.textLabel.text;
    }
}

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"%@",@"Cell Selected");
   UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
   [self performSegueWithIdentifier:@"cellWasSelected" sender:cell];
}

PS如果您仍然遇到问题,那么您可能是故事板的新手,您需要足够的知识来处理它们。 http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

于 2012-08-17T04:05:17.670 回答