如何在另一个视图控制器上向 UInavigationcontroller 显示完整的选定表格单元格

Posted

技术标签:

【中文标题】如何在另一个视图控制器上向 UInavigationcontroller 显示完整的选定表格单元格【英文标题】:How to display complete selected table cell on another viewcontroller via UInavigationcontroller 【发布时间】:2015-11-30 11:06:50 【问题描述】:

我以编程方式创建了表格视图,我喜欢在另一个视图控制器上显示相同的选定表格单元格(视图)。我的意思是我喜欢显示的选定的特定单元格视图。我只需要通过导航控制器使用。

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

    WriteSuggestionController *writeSuggst=[[WriteSuggestionController alloc]init];


    UITableViewCell *myCell = [theTableView cellForRowAtIndexPath:indexPath];
    // Access accessory View  as below.
    writeSuggst.bottomView=myCell.accessoryView;

    [self.navigationController pushViewController:writeSuggst animated:YES];



我看到了一种方法,但是我不知道如何从另一个视图中取回 cel。

【问题讨论】:

你得到了什么?我的意思是您的视图是否导航到另一个视图?它是否显示带有单元格的表格视图? 1.在WriteSuggestionController 中创建一个UITableViewCell 属性,并在推送之前将您选择的单元格分配给它。 2. 不知道为什么你一开始就想这样做。 3. 更好的方法是截取单元格的屏幕截图并将其显示在下一个 VC 中的 imageView 中。 我没有想到.. 当我在 buttomview contoller @user3182143 中传递视图时 您是否将视图导航到 WriteSuggestionController? @NSNoob 如何在 WriteSuggestionController 中分配该单元格 【参考方案1】:

由于您只想在下一个 View Controller 中显示单元格的内容,因此最好将屏幕截图发送到下一个 View Controller。您可以在 writeSuggst VC 中创建一个名为 cellImg 的属性。同样在您的第一个 VC 中,您需要创建一个名为 viewImageUIImage 类型的强属性。然后这样做:

- (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    
        WriteSuggestionController *writeSuggst=[[WriteSuggestionController alloc]init];

    UITableViewCell *myCell = [theTableView cellForRowAtIndexPath:indexPath];
    // Access accessory View  as below.

    UIGraphicsBeginImageContext(cell.contentView.frame.size);

    [myCell.contentView.layer renderInContext:UIGraphicsGetCurrentContext()];

    self.viewImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();
    writeSuggst.cellImg = self.viewImage;
    [self.navigationController pushViewController:writeSuggst animated:YES];



在您的 writeSuggst VC 的 viewDidLoad() 中,写下这些行:

UIImageView *myCellImageView = [[UIImageView alloc] init];
CGRect frame = CGRectMake(0,0,yourWidth, yourHeight);//e.g. for a fullscreen width and 30 px height, you will write (0,0,self.view.frame.size.width,30)
myCellImageView.frame = frame;
myCellImageView.image = self.cellImage;
[self.view addSubview:myCellImageView];

【讨论】:

【参考方案2】:

在 WriteSuggestionController 中创建一个属性,

@property (assign/copy) UITableViewCell *destCell;

然后,在推送视图控制器之前,将 myCell 值设置为 destCell。

writeSuggst.destCell = mycell;
[self.navigationController pushViewController:writeSuggst animated:YES];

【讨论】:

我确实喜欢,但它不会在第二个 VC 的位置之上

以上是关于如何在另一个视图控制器上向 UInavigationcontroller 显示完整的选定表格单元格的主要内容,如果未能解决你的问题,请参考以下文章

当视图控制器呈现在另一个视图控制器上时如何获取屏幕截图?

如何在另一个视图中使用已经初始化的类?

如何在另一个视图控制器中访问 SpriteKit 场景的变量?

如何将图像设置为在另一个视图控制器中异步获取的 UIImageView?

关于在 View 上向 UIButton 添加目标的 MVC 实践

如何在另一个视图控制器中使用核心数据编辑 Tableview 单元格数据