【问题标题】:add subview to a view controller from another view controller从另一个视图控制器将子视图添加到视图控制器
【发布时间】:2023-03-11 16:32:01
【问题描述】:

我有两个视图控制器类。第一个,我有一个图像视图,第二个视图控制器有一个文本视图。第二个视图控制器有一个完成按钮,单击完成按钮时,我想在第一个视图控制器的图像上添加一个标签,并在该标签上传递文本视图的文本。 有什么办法吗? 请给我建议。

【问题讨论】:

  • 您是否从第一个展示了您想要控制的视图控制器?
  • 你有 vc1 代表 vc2。你从 vc2 获得了一些价值,你不会把它传递给 vc1?
  • 在 vc2 上我有一个按钮。在该按钮上单击我想在 vc1 上创建一个标签并在我从 vc2 获得的那个标签上传递值。
  • 我编辑了代码检查一下

标签: iphone ios xcode4.5


【解决方案1】:

使用委托。在第二个视图控制器上创建协议 并使第一个视图控制器成为它的代表。使用委托方法将 textview 的文本作为消息发送给委托(或者通常在类之间发送任何类型的数据)。

【讨论】:

  • 是的,如果代理设置不正确,它将无法工作。检查您的代表是否是nil,这很可能是。
  • 请提出一些我现在真的厌倦了的东西。
  • 应该是这样的。创建一个在按下按钮时通知其他视图控制器的协议。
【解决方案2】:

在第一个视图控制器中保留对第二个视图控制器的引用。

从第一个视图控制器调用第二个视图控制器中的公共函数。

【讨论】:

    【解决方案3】:

    查看控制器 A:

    @interface ViewControllerA : UIViewController
    {
    @public
        NString *text;
    }
    

    查看控制器 B:

    @interface ViewControllerB : UIViewController
    {
    @public
        ViewControllerA *refToA;
    }
    

    从 A 启动视图控制器 B 的代码:

    ViewControllerB *vc = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
    vc->refToA = self;
    [self presentModalViewController:vc animated:YES];
    

    在 View Controller B 中设置值:

    refToA->text = @"text to pass";
    [refToA.view addSubview:button];
    

    视图确实出现在 A:

    - (void)viewDidAppear:(BOOL)animated
    {
       if (text != nil)
       {
         NSLog(@"%@", text);
         // create your button here
       }
    }
    

    【讨论】:

    • 这样,我可以将值从一个 vc2 传递到另一个 vc1,但无法从 vc2 在 vc1 上创建标签。
    • 你可以。但是为什么要从 vc2 创建按钮?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2012-12-06
    • 2017-09-17
    相关资源
    最近更新 更多