将数据从视图控制器传递到第一个详细信息控制器,然后传递到第二个详细信息控制器

物理碎片

在这里将我的第一个问题发布在stackoverflow上!希望我的问题清楚,这里是...

我在具有表视图的First View Controller中嵌入了一个导航控制器。从表视图中,我有一个segue可以推送到First Detail Controller。一切正常,segue将数据传递到First Detail Controller,但是我想再次从按钮推到Second Detail Controller。

情节提要中的布局如下图情节提要的图像

我设置了第二个Detail Controller,然后从第一个Detail Controller上的按钮将其推送到该控制器。但是我无法弄清楚如何将数组中的数据传递给Second Detail Controller。我添加了一条NSLog行,以查看正在传递的内容,并且调试面板正在输出“ (空)

这是我来自名为ColorBookViewController的.m First View Controller的viewdidload和segue代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    Color *color1 = [Color new];
    color1.name = @"Red";
    color1.hexnumber = @"FF0000";
    color1.spanishname =@"Rojo";

    Color *color2 = [Color new];
    color2.name = @"Green";
    color2.hexnumber = @"00FF00";
    color2.spanishname =@"Verde";


    Color *color3 = [Color new];
    color3.name = @"Blue";
    color3.hexnumber = @"0000FF";
    color3.spanishname = @"Azul";

    colors = [NSArray arrayWithObjects: color1,color2,color3, nil];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
   if ([segue.identifier isEqualToString:@"showColorDetail"]) {
       NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
       ColorDetailViewController *destViewController = segue.destinationViewController;
       destViewController.color = [colors objectAtIndex:indexPath.row];
       }
}

这是从名为ColorDetailController的第一个细节控制器的.m加载的视图:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"This is...%@", color.name);
    self.nameLabel.text = color.name;
    self.hexnumberLabel.text = color.hexnumber;
}

我的.h用于SecondDetailController:

#import <UIKit/UIKit.h>
#import "Color.h"

@interface SecondDetailViewController : UIViewController

@property (nonatomic,weak) IBOutlet UILabel *spanishnameLabel;
@property (nonatomic, strong) Color *color;

@end

这是从名为SecondDetailController的Second Detail Controller的.m中加载的视图:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = color.name;
    NSLog(@"This is...%@", color.spanishname);
    self.spanishnameLabel.text = color.spanishname;
}

该应用程序在模拟器中运行良好,但是我得到了Second Detail Controller的空白屏幕,并且从NSLog(@“ This is ...%@”,color.spanishname)中得到了“空”结果;

关于为什么segue通过并保留第一个详细视图而不是第二个详细视图的实例的任何建议?还是我在这里缺少更基本的东西?我尝试在First Detail Controller上设置第二个Segue,然后NSLog产生正确的结果(西班牙语中的颜色名称),但是我不确定如何将其传递给Second Detail Controller:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showMoreDetail"]) {

        NSLog(@"This is... %@",color.spanishname);  //works fine
        self.spanishnameLabel.text = color.spanishname;  //throws error 
        }
}

感谢您的帮助或见识!

在此处下载完整的项目

卢卡斯·爱德华多

要将数据传递到第二个ViewController,只需执行与第一个ViewController完全相同的操作即可:Color在segue中传递对象的引用

在中SecondDetailViewController,您已经具有color属性。您只需要使用在Color中选择的同一对象设置此属性ColorBookViewController您已经在中有了此引用ColorDetailViewController,只需SecondDetailViewController通过segue将其直接传递给即可

在您的内部ColorDetailViewController

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if ([segue.identifier isEqualToString:@"showMoreDetail"]) {
       SecondDetailViewController *destViewController = segue.destinationViewController;
       destViewController.color = self.color;
   }
}

现在,在的viewDidLoadSecondDetailViewController,您将能够正确设置标签,例如self.spanishnameLabel.text = color.spanishname;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据从第二个视图传递到第一个视图控制器

来自分类Dev

将数据从第二个视图传递到第一个视图控制器

来自分类Dev

如何将Mapkit坐标从视图控制器(mapView)传递到详细信息控制器(mapView)

来自分类Dev

如何将详细信息模型从控制器传递到视图

来自分类Dev

如何将详细信息模型从控制器传递到视图

来自分类Dev

如何通过选项卡栏控制器将值从第二个视图传递到第一个视图

来自分类Dev

将Firebase数据从一个视图控制器传递到详细视图控制器

来自分类Dev

在第一个视图控制器的标签中显示输入到文本字段(在第二个视图控制器中)的文本?

来自分类Dev

如何从表视图控制器转到详细信息控制器然后返回

来自分类Dev

如何从表视图控制器转到详细信息控制器然后返回

来自分类Dev

如何将标签数据传递到第二个视图控制器中的另一个标签

来自分类Dev

将数据移动到另一个视图控制器,但是第二个视图控制器先加载第一个视图控制器

来自分类Dev

ios从第二个视图控制器向第一个视图控制器发送Objective-c数据发送

来自分类Dev

无法将第二个视图控制器嵌入第一个视图控制器的顶部

来自分类Dev

如何将第二个视图控制器文本字段值传递给第一个视图控制器数组并在 swift4 中点击按钮时关闭

来自分类Dev

从详细信息视图控制器获取UIBarButtonItem

来自分类Dev

JavaFX如何从第一个控制器访问第二个控制器的控件

来自分类Dev

使用“显示详细信息” segue替换溢出的视图控制器中的详细信息视图控制器

来自分类Dev

使用“显示详细信息” segue替换溢出的视图控制器中的详细信息视图控制器

来自分类Dev

如何获得一个弹出表单,以使用Rails 4.1 Bootstrap将更多详细信息传递给控制器

来自分类Dev

如何从另一个位于segue中的视图控制器实例化导航和标签控制器(显示详细信息)?

来自分类Dev

在拆分视图控制器中使用多个详细信息视图控制器

来自分类Dev

如何快速将信息传递给第二个视图控制器中的Uilabel?

来自分类Dev

如何快速将信息传递给第二个视图控制器中的Uilabel?

来自分类Dev

如何将信息从一个视图控制器中的表视图单元传递到另一视图控制器?

来自分类Dev

如何将用户上下文详细信息从机器人控制器传递到 FormDialog

来自分类Dev

5秒后从第一个视图控制器移至第二个

来自分类Dev

如何将值传递给第二个视图控制器的initWithCoder?

来自分类Dev

将数据传递到导航控制器中的另一个视图控制器

Related 相关文章

  1. 1

    将数据从第二个视图传递到第一个视图控制器

  2. 2

    将数据从第二个视图传递到第一个视图控制器

  3. 3

    如何将Mapkit坐标从视图控制器(mapView)传递到详细信息控制器(mapView)

  4. 4

    如何将详细信息模型从控制器传递到视图

  5. 5

    如何将详细信息模型从控制器传递到视图

  6. 6

    如何通过选项卡栏控制器将值从第二个视图传递到第一个视图

  7. 7

    将Firebase数据从一个视图控制器传递到详细视图控制器

  8. 8

    在第一个视图控制器的标签中显示输入到文本字段(在第二个视图控制器中)的文本?

  9. 9

    如何从表视图控制器转到详细信息控制器然后返回

  10. 10

    如何从表视图控制器转到详细信息控制器然后返回

  11. 11

    如何将标签数据传递到第二个视图控制器中的另一个标签

  12. 12

    将数据移动到另一个视图控制器,但是第二个视图控制器先加载第一个视图控制器

  13. 13

    ios从第二个视图控制器向第一个视图控制器发送Objective-c数据发送

  14. 14

    无法将第二个视图控制器嵌入第一个视图控制器的顶部

  15. 15

    如何将第二个视图控制器文本字段值传递给第一个视图控制器数组并在 swift4 中点击按钮时关闭

  16. 16

    从详细信息视图控制器获取UIBarButtonItem

  17. 17

    JavaFX如何从第一个控制器访问第二个控制器的控件

  18. 18

    使用“显示详细信息” segue替换溢出的视图控制器中的详细信息视图控制器

  19. 19

    使用“显示详细信息” segue替换溢出的视图控制器中的详细信息视图控制器

  20. 20

    如何获得一个弹出表单,以使用Rails 4.1 Bootstrap将更多详细信息传递给控制器

  21. 21

    如何从另一个位于segue中的视图控制器实例化导航和标签控制器(显示详细信息)?

  22. 22

    在拆分视图控制器中使用多个详细信息视图控制器

  23. 23

    如何快速将信息传递给第二个视图控制器中的Uilabel?

  24. 24

    如何快速将信息传递给第二个视图控制器中的Uilabel?

  25. 25

    如何将信息从一个视图控制器中的表视图单元传递到另一视图控制器?

  26. 26

    如何将用户上下文详细信息从机器人控制器传递到 FormDialog

  27. 27

    5秒后从第一个视图控制器移至第二个

  28. 28

    如何将值传递给第二个视图控制器的initWithCoder?

  29. 29

    将数据传递到导航控制器中的另一个视图控制器

热门标签

归档