1

我遇到了一個與我的視圖控制器有關的問題,並希望有人能幫助我:我的故事板的行爲就好像視圖控制器不存在,阻止我從連接到控制器。新創建的UIViewController在故事板中不可用

我在故事板中創建了一個自定義的自由形式視圖控制器,它的目的是在彈出框中顯示,允許用戶使用彈出框的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]; 

看來,我認爲我做的視圖控制器是一個典型的視圖控制器:

enter image description here

我用下面的代碼中動態實例化視圖控制器爲酥料餅

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

​​

當我測試的代碼,它的工作原理 - 標籤可以與酥料餅進行編輯,但我不能設置酥料餅內的文字,因爲我不能文本視圖鏈接到視圖控制器。

我感謝您的幫助!

+0

我剛剛在Xcode 4.6.1(4H512)中創建了一個新項目,並創建了一個新的UIViewController子類。該課程在創建後即可在IB獲得。也許你的班級不符合你的控制器類型,例如。它是IB中的UITableViewController,並且您試圖將其設置爲UIViewController。 – Adam 2013-03-20 00:47:50

回答

1

我想出了答案,它是一個複合材料,3件事。

  1. 我對這個項目做了一個「乾淨」,然後退出Xcode和重新啓動它 - 這將清除一些莫名其妙的錯誤,在這種情況下所做的工作。我能在故事板
  2. 添加控制器我忘了IBOutlet旁邊的TextView:@property(nonatomic,strong)IBOutlet UITextView* textView;
  3. 在酥料餅的情況下,TextView的屬性是零,直到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; 
    

我希望有人認爲這有用:不得不如下返工。

相關問題