0

我的应用程序中有 tableview、detailview 和 favoriteview。当用户触摸 tableview 中的单元格时,将转到包含照片、标签、文本字段和按钮的 detailview 以添加到收藏夹。用户可以触摸收藏夹按钮将特定单元格添加到 favoritetableview。我可以成功地将单元格添加到喜爱表视图,但是当我在喜爱表视图中触摸单元格并转到详细视图时,详细表视图(照片和文本字段等)中没有加载任何内容,只能将名称发送到详细视图我如何将照片和文本字段等发送到详细视图最喜欢的观点?如何从与 maintableview 相同的 favoriteview 访问 detailview?

任何想法,将不胜感激。谢谢。

这是我的模特照片:[在此处输入图片描述][1]

这是每个视图的 prepareforsegue 方法:

主表视图:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"SpeciesDetail"]) {
        GeneralViewController *detailViewController = (GeneralViewController*)[segue destinationViewController];
        NSIndexPath *path = [self.tableView indexPathForSelectedRow];
        BirdInfo *info;
        BirdImage *imageObj;
        if (!_didSearch) {
            info = (BirdInfo *)[self.fetchedResultsController objectAtIndexPath:path];
            imageObj = info.thumbnailImage;
        } else {
            info =(BirdInfo *)_searchResult[path.row];
        }
        detailViewController.birdName = info.com_name;
        detailViewController.sciName = info.sci_name;
        detailViewController.desbird = info.descriptionbird;
        detailViewController.birdInfo = info;
        detailViewController.managedOjbectContext = self.managedOjbectContext;


    }
}

收藏表视图:

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



   NSIndexPath *indexPath = (NSIndexPath *)sender;



   // NSIndexPath *indexPath =[self.tableView indexPathForSelectedRow];
    Favorite *fav = (Favorite *)[self.fetchedResultsController objectAtIndexPath:indexPath];





NSString *combinedName = fav.name;




if  ([segue.identifier isEqualToString:@"FavoriteBirdDetail"])
{
    GeneralViewController *detailViewController = (GeneralViewController*)[segue destinationViewController];

    detailViewController.birdName = [combinedName componentsSeparatedByString:@"^"][0];
    NSArray *anArray = [combinedName componentsSeparatedByString:@"^"];

    if ( anArray.count >= 2) {
        detailViewController.sciName = anArray[1];
        //detailViewController.birdInfo=fav.birdInfo;
    }


    detailViewController.managedOjbectContext = self.managedOjbectContext;
}

和我的故事板

在此处输入图像描述

4

2 回答 2

0

我得到了你的错误。您正在将 _birdInfo 属性分配给 detailViewController 但 _birdInfo 它自身为空。在执行 detailViewController.birdInfo = _birdInfo; 之前,您应该将值设置为 _birdInfo;

可能是你想要做的是:

detailViewController.birdInfo = fav.birdInfo;

// Not detailViewController.birdInfo = _birdInfo;
//_birdInfo is null if you assign to detailViewController.birdInfo will return null too
于 2016-09-05T07:03:33.277 回答
0

将 managedObjectContext 从一个类传递到另一个类是完全没有必要的。您可以从 AppDelegate 访问 managedObjectContext。首先检查您是否可以通过打印日志 didselect tableview 委托从最喜欢的表中获取用户信息。然后在从最喜欢的 VC 中搜索时以 viewdidload 方法打印用户信息。

于 2016-09-04T19:19:25.947 回答