从FavoriteTableView发送数据到DetailView?

时间:2016-09-03 07:07:10

标签: ios core-data tableview pass-data favorite

我在我的应用程序中有tableview,detailview和favoriteview。当tableview中的用户触摸单元格将转到包含照片,标签,文本字段和按钮的详细视图以添加到favorite.user可以触摸收藏夹按钮以将特定单元格添加到favoritetableview 。 我可以成功地将单元格添加到favoritetableview但是当我触摸cellitetableview并转到详细视图时,detailtableview(照片和文本字段等)中的任何内容都只能将名称发送到detailview 如何从favoriteview发送照片和文本字段等到detailview? 我怎样才能从favoriteview中看到来自favoriteview的详细视图?

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

这是我的模特照片: [在此输入图像说明] [1]

这是针对每个观点的prepareforsegue方法:

maintableview:

    - (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;


    }
}

Favoritetableview:

- (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;
}

和我的故事板

enter image description here

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

您可能想做的就是:

<?php