gpt4 book ai didi

ios - 如何将 subview 添加到另一个 View Controller ?

转载 作者:行者123 更新时间:2023-12-01 19:15:35 25 4
gpt4 key购买 nike

我正在做一个 Ipad 应用程序。现在我有 2 个 viewcontroller,ViewController 有一个 button1,它有一个 popover segue 到第二个 viewcontroller(PopoverController)。然后,PopoverController 有一个 button2,如果我单击 button2,我会从我的服务器收到一些 UIImage。如果单击 button2,我想将 UIImageView 的几个 subview 添加到 ViewController 以显示这些图像。

button1 效果很好,PopoverController 可以按预期弹出。但是当我点击button2时,什么也没发生。我想知道如何在 2 个 View Controller 之间传递数据以及如何将 subview 添加到另一个 View Controller 。

一些与我的问题有关的代码:

View Controller .h:

#import <UIKit/UIKit.h>

@class PopoverController;

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *button1;
@property (strong, nonatomic) PopoverController *popoverController;

@end

弹出 Controller .h:
#import <UIKit/UIKit.h>

@class ViewController;

@interface PopoverController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *button2;
@property (strong, nonatomic) UIImage *tempImg;
@property (strong, nonatomic) ViewController *viewController;

- (IBAction)addsubviews:(id)sender;

@end

我不能只使用 [viewController.view addSubview:img1];- (IBAction)addsubviews:(id)sender;添加 subview 的方法。所以有人可以帮助我吗? :)

====第一次更新====

有人建议我必须使用 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法。我已经通过控制单击 button2 并在 button2 和 ViewController 之间创建自定义 segue 来尝试这个。当我单击button2时,它显示:
Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'change'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
所以我想知道是否应该添加 NavigationController .如果是这样,我该怎么办?

====第二次更新====

我现在使用 Paramasivan 的代码,我找到了从另一个 View Controller 调用方法的方法。现在的问题是我的 View Controller 中新添加的 subview 没有显示出来。我想我必须更新我的 View Controller 才能使其可见。

在我的 - (IBAction)addsubviews:(id)sender;方法,我通过 [self.viewController createSubViewWithImage:_tempImg]; 调用 ViewController 中的方法

所以当我点击button2时可以调用该方法,但是viewcontroller的 View 没有任何改变。

最佳答案

将此添加到 - (void)viewDidLoad ,

self.popoverController = [[PopoverController alloc] init]; 
self.popoverController.viewController = self;

确保没有在其他地方设置 self.popoverController = ... .

不是 添加类似 self.viewController = ... 的内容在 popovercontroller类(class)。你不必这样做 self.viewController.popoverController = self;也是。如果您已经拥有它,只需删除这些行。

完成这些后,请确保您正在显示 self.popoverController仅在弹出窗口中,您不会为 popoverController 创建新对象在那里上课。因此,如果这些都很好,您可以使用任何您想要的方法从 popoverController 传递图像上课至 viewController类(class)。

正如您在评论中提到的,您可以使用 [self.viewController createSubViewWithImage:_tempImg];在您的 popovercontroller类(class)。

更新:
如果您通过 Storyboard进行操作,则需要在 prepareForSegue 中进行设置方法,您不必创建 self.popoverController一点也不。在您的情况下删除该部分。您可以按照此处提到的过程设置自定义 segue 并实现 prepareForSegue传递对象的方法。来源: On storyboards, views and passing data along
  • 将 Storyboard中的segue名称设置为“CustomSegue”
  • 实现prepareForSegue方法
  • 在方法内部,检查 segue 的名称是否匹配“CustomSegue”,然后设置 viewControllerpopoverController那里的对象,

  • 尝试,
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"CustomSegue"]) {
    PopoverController *popoverController = [segue destinationViewController];
    popoverController.viewController = self;
    }
    }

    完成此操作后,您需要调用 [self.viewController createSubViewWithImage:_tempImg];在您的 popoverController类(class)。

    关于ios - 如何将 subview 添加到另一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599976/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com