簡體   English   中英

新創建的UIViewController在情節提要中不可用

[英]newly created UIViewController is not available in a storyboard

我遇到一個與我的視圖控制器有關的問題,希望有人可以幫助我: 我的情節提要的行為就像視圖控制器不存在一樣 ,阻止了我與控制器的連接。

我已經在情節UITextLabel創建了一個自定義自由格式視圖控制器,其目的是在彈出窗口中顯示,允許用戶使用彈出窗口的UITextView編輯UITextLabel

我使用以下代碼動態實例化彈出窗口的視圖控制器:

//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];

在我看來,我制作的視圖控制器是典型的視圖控制器:

在此處輸入圖片說明

我正在運行的問題是,自動完成的行為就像我的應用程序中沒有這樣的視圖控制器一樣。 即使我在此處手動粘貼其名稱,也無法將StoryView的textView屬性連接到視圖控制器。

在此處輸入圖片說明

當我測試代碼時,它可以工作-可以使用彈出窗口編輯標簽,但是由於無法將文本視圖鏈接到視圖控制器,因此無法在彈出窗口中設置文本。

我感謝您的幫助!

我想出了答案,這是一個三件套的復合材料。

  1. 我在項目上進行了“ 清理 ”,然后退出xCode並重新啟動它-清除了一些怪異的bug,在這種情況下可以正常工作。 我能夠在情節提要中添加控制器
  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; 

我希望有人覺得這有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM