gpt4 book ai didi

ios - 新创建的 UIViewController 在 Storyboard中不可用

转载 作者:行者123 更新时间:2023-11-29 13:16:59 26 4
gpt4 key购买 nike

我的一个 View Controller 遇到了问题,希望有人能帮助我:我的 Storyboard表现得好像 View Controller 不存在,阻止我连接到 Controller 。

我在 Storyboard中创建了一个自定义的自由格式 View Controller ,它的目的是显示在弹出窗口中,允许用户使用弹出窗口的 UITextView 编辑 UITextLabel >.

我正在使用以下代码动态实例化弹出窗口的 View Controller :

//create a popover with a text view under a label to be edited,
// allowing the user to edit the label with the popover

GLAppDelegate* appDelegate = (GLAppDelegate*)[[UIApplication sharedApplication] delegate];
UIViewController *mvc = (UIViewController *)appDelegate.window.rootViewController;
PopoverTextViewController* textViewController = [mvc.storyboard instantiateViewControllerWithIdentifier:@"popoverTextViewController"];
textViewController.textView.text = ((OutlinedLabel*)v.attributedView).text;
textViewController.label = (OutlinedLabel*)v.attributedView;

[self.popover dismissPopoverAnimated:YES];
self.popover = [[UIPopoverController alloc] initWithContentViewController:textViewController];

[self.popover presentPopoverFromRect:v.attributedView.frame inView:v permittedArrowDirections:UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown animated:YES];

在我看来,我制作的 View Controller 是一个典型的 View Controller :

enter image description here

我遇到的问题是自动完成的行为就像我的应用程序中没有这样的 View Controller 一样。即使我在这里手动粘贴它的名称,我也无法连接 textView 属性从 Storyboard到 View Controller 。

enter image description here

当我测试代码时,它起作用了——可以使用弹出框编辑标签,但我无法在弹出框内设置文本,因为我无法将 TextView 链接到 View Controller 。

感谢您的帮助!

最佳答案

我找到了答案,它是一个复合 Material ,由 3 件组成。

  1. 我对项目进行了“清理”,然后退出 xCode 并重新启动它 - 这清除了一些奇怪的错误,并且在这种情况下确实有效。我能够在 Storyboard中添加 Controller
  2. 我忘记了 textview 旁边的 IBOutlet:@property(nonatomic,strong)IBOutlet UITextView* textView;
  3. 在弹出窗口的情况下,textView 属性为 nil,直到在弹出窗口出现后调用 viewDidLoad,因此必须按如下方式重新编写代码:

    //create a popover under the label with a text view, allowing the user to edit the label with the popover
    GLAppDelegate* appDelegate = (GLAppDelegate*)[[UIApplication sharedApplication] delegate];
    UIViewController *mvc = (UIViewController *)appDelegate.window.rootViewController;
    PopoverTextViewController* textViewController = [mvc.storyboard instantiateViewControllerWithIdentifier:@"popoverTextViewController"];


    [self.popover dismissPopoverAnimated:YES];
    self.popover = [[UIPopoverController alloc] initWithContentViewController:textViewController];

    //before this call, all views of the controller are not loaded
    [self.popover presentPopoverFromRect:v.attributedView.frame inView:v permittedArrowDirections:UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown animated:YES];

    //once popover is presented, the textView is created and is available
    textViewController.textView.text = ((OutlinedLabel*)v.attributedView).text;
    textViewController.label = (OutlinedLabel*)v.attributedView;

我希望有人觉得这很有用。

关于ios - 新创建的 UIViewController 在 Storyboard中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513185/

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