2017-09-22 81 views
0

我不會在家裏這樣做,但我在工作。 (即反應像「你不應該想這樣做」不會洗。)Xcode:分享兩個目標之間的主要故事板

  • 目標:恢復到一個共享的主要故事板的兩個目標。
  • 症狀:網點似乎沒有連接。
  • 已經嘗試過
    • 從設備
    • 刪除應用程序做一個乾淨的構建
    • 周圍的故事板XML戳(一切看起來如預期)

我繼承了一個有兩個目標的項目,每個目標都有自己的故事板。目標分享確切相同的代碼。第二個目標的故事板是從第一個目標中克隆出來的。它的差異很小:主要是背景圖片不同。 全部出口轉到相同代碼與第一個故事板中的相應出口一樣。 (AFAIK)

現在,第一個簡單的步驟是僅告訴第二個目標使用第一個目標的主要故事板。這發生在目標>常規>部署信息中。 (或者在應用程序的plist文件中,針對黑客)。適當的故事板正在Copy Bundle Resources構建階段中複製。

但是,當應用程序運行時,在啓動屏幕消失之前(即加載主視圖),我們會崩潰並出現NSUnknownKeyException。對於兩個故事板中似乎都正確連接的插座。 (當然對同一個伊娃)

現在,期待這個工作馬上就要求太多了。很顯然,我必須在每個目標的基礎上處理不同的背景圖像。但是我不認爲基本理念爲什麼不可行的根本原因。如何繼續,歡迎提出建議。 (參考「星際迷航」集「Spock的大腦」只會第一次有趣。)

+0

什麼是未知鍵?只要兩個目標中的類名相同,並且所有@IBOutlets都存在,它就可以工作。 – Paulw11

+0

未知鍵實際上是ViewController的一個ivar的名稱,它在兩個故事板中都正確連接到IB中的插座。所以,正如我們三個人顯然認爲的那樣,它應該起作用。至少這給了我一些鼓勵,我不想嘗試一些不可能的事情。將繼續破解。 –

+0

關鍵是「activityIndi​​cator」,它是通過@IBOutlet連接到* Storyboard中的相應UI對象的實例變量的正確名稱。 (這個插座是按字母順序排列的,可能是運行時第一個嘗試連接的插座。)我刪除並重新建立了連接,但無濟於事。我已經覆蓋了setValue(_:forKey)並設置了一個斷點,無論如何發生了崩潰,並且在斷點處沒有停止。當我回到舊的故事板(幾乎在所有方面都一樣)時,一切都很好。神祕仍在繼續。 –

回答

0

我已經完成了這個工作,它確實有效。如果您的應用程序或應用程序購買有細微差異,並且其中包含應用程序價格的所有購買的另一個版本,那麼這不是一種不合理的方法。

這聽起來像是你的問題更多的東西。你有沒有試過打破initWithCoder的類應該有這個插座,並證實你正在進入?第二個目標不同於同一個名字,但是有不同的出口,並且正在被用於構建或類似的東西?

另外,如果您在項目中有其他代碼的故事板,您是否確定文件定位是正確的,因此如果兩個文件名都相同,那麼正確的故事板會被包含在內?同樣,對於具有相同類名的兩個項目中的任何文件。

我一直回到針對此文件的目標......感覺就像有些東西可能在某處,所以您認爲實際使用的不是。

我剛剛在這裏嘗試了一個新項目,兩個目標,刪除了第二個從info.plist中刪除的所有文件,從第一個目標到第二個目標的所有文件,它工作正常 - 網點連接爲預期。

+0

謝謝Clarus,週一將提供建議。 (沒有工作的週末!)短篇小說:故事板有不同的名字。當我從第二個應用程序的「複製包資源」列表中刪除第一個故事板時,我很早就發現文件未找到,所以我相信我正在使用正確的故事板文件。 MOOF! –

+0

查看對Paulw11的回覆。還嘗試刪除舊的Storyboard;沒有預料到有什麼區別,也沒有看到任何區別。絕對不願在兩個故事板上繼續平行工作(主要是自動佈局);同樣不願意用一個Storyboard和兩個目標從零開始重新創建整個項目。 (這應該肯定有效。)P.S .:我很感激你在選擇之前真的嘗試了它。當然,上面Paulw11沒有陰影。但是我們都經歷了錯誤的「建議」。 –