簡體   English   中英

在情節提要中向從nib加載的自定義類UIViewController添加子視圖

[英]Add a subview to a custom class UIViewController that loads from nib, in Storyboard

為了澄清這個荒謬的標題:

我正在使用自己的JSQMessagesViewController子類( https://github.com/jessesquires/JSQMessagesViewController)-我們將其稱為ACMessagesViewController。 我通過將情節提要UIViewController的自定義類設置為ACMessagesViewController來通過情節提要加載ACMessagesViewController。 我試圖通過情節提要向ACMessagesViewController的視圖添加一個子視圖。

JSQMessagesViewController從筆尖加載。 當我通過情節提要板向ACMessagesViewController的視圖添加子視圖時,該視圖消失。 子視圖似乎要添加到ACMessagesViewController的self.view以外的視圖中,並且當viewdidload范圍運行通過時,子視圖就消失了。

我的問題是:1.從筆尖加載UIViewController時,將子視圖(通過情節提要)添加到自定義類UIViewController的正確方法是什么? 2.在此視圖加載過程中發生了什么? 為什么我的子視圖(通過情節提要添加)添加到與ACMessagesViewController中的self.view不同的視圖中?

提前致謝!

我認為這是在iOS開發中經常遇到的“如果您需要解決它,您可能做錯了”的場景之一。 :-)確實,如果您想要JSQMessagesViewController提供的功能,則無需添加其他視圖。 但是,如果必須添加視圖,則“正確”的方法是將它們添加為在viewDidLoad中調用super之后任何self.view的子視圖。 如果您不想以編程方式構造視圖,則可以將它們放在單獨的筆尖(而不是情節提要)中,然后手動加載它們。

(注意:這是假設viewDidLoad被調用。如果未調用,則可能需要使用其他方法。)

我使用@Anna的建議在viewDidLoad添加視圖,但是您無需使用第二個Xib或在代碼中設計視圖。 您需要的是:

A.在情節提要/ xib文件的JSQMessagesViewController場景中設計視圖。

B.創建您需要呈現的視圖的出口。

C.在viewDidLoad使用view.addSubview(myView)添加您的視圖(或者為其中的所有objc添加[self.view addSubview:self.myView]

D.就這樣!

暫無
暫無

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

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