簡體   English   中英

使用默認的tab-controller創建的項目…第一個視圖控制器不響應addsubview

[英]Using default tab-controller created project… first view controller doesn't respond to addsubview

我使用默認的選項卡控制器項目創建了一個項目。 我正在使用界面生成器來編輯.xib文件並添加圖像和按鈕。 我將它們連接到接口構建器中的FirstViewController對象(我創建了該對象並將其類設置為與代碼文件相同的類)。 我使用IBoutletsIBActions連接了所有內容。

一切工作正常,但隨后我在界面生成器中進行了一些更改(添加了UILabel ),現在單擊時運行的方法(我在調試器中進行了遍歷)有一行在視圖控制器中添加了一個子視圖,並且它就像沒有執行一樣。 該方法(和代碼一直運行)沒有錯誤地執行(每個調試器),但是只是沒有添加視圖。 這是在我通過界面生成器進行了一些更改之后發生的。

現在,如果我通過單擊適當的選項卡並將IBOutlet拖動到UILabel來將按鈕連接到“ Selected First View Controller”,則該標簽現在具有多個引用出口。 現在,如果我對按鈕執行相同的操作,則方法( IBAction )執行兩次,但實際上已添加並顯示了子視圖。 但是,由於我的IBAction (按鈕)方法訪問存儲某些內容的屬性,因此出現內存訪問錯誤。 我猜想這與以某種方式在First View Controller中創建內存有關,但是試圖在Selected First View Controller中訪問它? 如果那有意義的話?

我不知道為什么會這樣,為什么只是按鈕突然停止工作。 我試圖盡我所能解釋這個問題,這有點令人困惑。 但是,如果有人有任何技巧或想法,我很想聽聽你們對這個問題的看法以及如何解決。

您確定第一個出口實際上已經掛好了嗎? 如果您命名一個插座,使其與筆尖加載時設置的其他屬性發生沖突(通過initWithCoder :),則可能導致事情最終無法正常進行。 您可以通過NSLog在awakeFromNib中檢查網點的值來進行檢查。

這聽起來也很不錯-如果我弄錯了,請隨時糾正我-您是在將選項卡欄加載的視圖中的動作附加到選項卡欄的控制器上。 這兩個實體有很大的不同,您希望從視圖訪問的任何數據都應從視圖的控制器而不是選項卡欄的控制器中引用(在加載和卸載其他視圖控制器時,該控件的工作量應相當輕)。 同樣,您不應將子視圖添加到視圖控制器,也不知道如何處理子視圖-您應該使用視圖控制器將子視圖添加到視圖。 盡管看起來像是語義問題,但視圖控制器與視圖在本質上是不同的。 前者的工作是管理視圖的內容和行為,並在必要時響應視圖的動作,而后者只是用於在屏幕上顯示事物的機制。

暫無
暫無

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

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