Swift-多Xib文件復用單Swift文件

前言

  • 在開發(fā)過程中颜屠,我們經(jīng)常會遇到同一個界面需要在多個場景中使用,但是每個場景卻又是針對原始界面進行一些細微變化的情況糜工,這個時候筐骇,我們可以采用多個.xib文件復用同一個xxxxViewController.swift文件惠拭,其實直接創(chuàng)建多個控制器文件既具有可讀性也簡單扩劝,這里看著更加的復雜了,我也不知道為什么會有這個操作职辅,但是在原始項目中看到了這個用法棒呛,就把他記錄下來,也算是增加一種新的可能吧域携;
  • 該方法同樣適用于跨target類的調(diào)用簇秒,但是需要一些細節(jié)上的注意,后面我會詳細說明秀鞭。

構筑首個xxxViewController(帶xib)

1.首先我們像往常一樣創(chuàng)建一個ViewController趋观;
2.針對該控制器區(qū)分出通用部分以及單獨使用部分
這里我標注了通用部分和基礎版,這個通用部分就是后續(xù)多個xib文件中都需要展示的UI控件锋边,而基礎版則是只會在該xib文件中使用皱坛。

用于復用的.swift文件以及首個基礎界面

拷貝原始xib文件

1.由于是對基礎界面進行的修改,所以我們直接對原始界面xib進行拷貝豆巨;

拷貝后的xib文件

2.將拷貝后的文件重命名并拖拽進項目剩辟,這里需要注意的是,如果是跨target調(diào)用的情況往扔,需要在Add to targets中勾選對應的target類別贩猎,否則調(diào)用時將報錯,推薦命名法直接在后面加上 ".xxxx"來區(qū)分萍膛,這里我使用的是BasicVC.Buyer.xib 與 BasicVC.Seller.xib來命名

導入拷貝后的xib文件

關聯(lián)拷貝xib的對應控件

1.針對拷貝后的xib單獨拖拽對應的控件吭服,通用的文本依舊使用同一個@IBOutlet 進行關聯(lián),這里使用的是名為lbCommon的UI控件蝗罗,而單獨使用的重新拖拽@IBOutlet噪馏,由于使用的是weak修飾符,在實現(xiàn)的過程中绿饵,總是從xib指向代碼塊來檢索欠肾,所以并不用擔心代碼中遇到xib中不存在的@IBOutlet時會報錯,但需要注意的是默認拖拽生成的UI參數(shù)會對該弱引用進行強制轉(zhuǎn)換拟赊,為了不引起后續(xù)在代碼中操作失誤導致強制轉(zhuǎn)換控制而引起的報錯刺桃,我們可以將非通用的部分改為可選類型?,例如UILabel?
2.對于跨target調(diào)用的情況吸祟,還需要另外在target Membership中勾選出關聯(lián)的xib所屬的對應target瑟慈,否則依舊會報錯

自此所有xib層面所需要完成的工作就結(jié)束了

代碼層面調(diào)用

// 代碼中綁定對應xib的方法
// 由于這里使用的是跨target的情況桃移,所以通過標識來進行區(qū)分調(diào)用,實際使用中可自行區(qū)分
func create() -> UIViewController {
  var nibName: String?
  #if Buyer
  nibName = "BasicVC.Buyer"
  #elseif Seller
  nibName = "BasicVC.Seller"
  #else
  nibName = "BasicVC"
  #endif
  // 根據(jù)對應的xib名進行加載
  let vc = BasicVC(nibName: nibName, bundle: nil)
  return vc
}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葛碧,一起剝皮案震驚了整個濱河市借杰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌进泼,老刑警劉巖蔗衡,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乳绕,居然都是意外死亡绞惦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門洋措,熙熙樓的掌柜王于貴愁眉苦臉地迎上來济蝉,“玉大人,你說我怎么就攤上這事菠发⊥趼耍” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵滓鸠,是天一觀的道長雁乡。 經(jīng)常有香客問我,道長哥力,這世上最難降的妖魔是什么蔗怠? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮吩跋,結(jié)果婚禮上寞射,老公的妹妹穿的比我還像新娘。我一直安慰自己锌钮,他們只是感情好桥温,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梁丘,像睡著了一般侵浸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氛谜,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天掏觉,我揣著相機與錄音,去河邊找鬼值漫。 笑死澳腹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酱塔,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼沥邻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了羊娃?” 一聲冷哼從身側(cè)響起唐全,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕊玷,沒想到半個月后邮利,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡集畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年近弟,在試婚紗的時候發(fā)現(xiàn)自己被綠了缅糟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挺智。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窗宦,靈堂內(nèi)的尸體忽然破棺而出赦颇,到底是詐尸還是另有隱情,我是刑警寧澤赴涵,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布媒怯,位于F島的核電站,受9級特大地震影響髓窜,放射性物質(zhì)發(fā)生泄漏扇苞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一寄纵、第九天 我趴在偏房一處隱蔽的房頂上張望鳖敷。 院中可真熱鬧,春花似錦程拭、人聲如沸定踱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崖媚。三九已至,卻和暖如春恤浪,著一層夾襖步出監(jiān)牢的瞬間畅哑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工水由, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荠呐,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像直秆,于是被迫代替她去往敵國和親濒募。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容