iOS xib 創建多個cell 遇到的坑,可能有你的坑

1.一個xib 創建多個 cell 加載時錯誤

錯誤:

reason: 'unable to dequeue a cell with identifier XXCellZero - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

解決方法:

1.1.在XXcell.h 文件中聲明創建方法:

圖1

1.2 .在XXcell.m?文件中實現該方法:

注意:一定要通過?dequeueReusableCellWithIdentifier:進行復用,不可通過復用xib 方法復用:dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath?


圖2

2. 一個xib 創建多個 cell ?拖線的按鈕事件不觸發,斷點不走

2.1. 檢查按鈕是否被父控件覆蓋或者被不可點擊的空間覆蓋,解決方法:在xib中調整控件位置就行。

2.2. 檢查xib 是否是tableviewCell 類型,而不是普通view

2.3. 檢查所連接的線是否是對應當前cell 上的控件:

錯誤映射:

圖: 錯誤映射 1


圖: 錯誤映射 2


圖: 錯誤映射 3


圖: 錯誤映射 4


解決錯誤映射:

1.把不對應的映射去掉

2.把對應的映射連接上去:連接的時候注意的是,不要使用:按control 鍵 + 鼠標拖線 (?)如下圖:


步驟 1


步驟 2


3.xib 動態約束設置


圖3

我們有時候要做動態約束,我們可以不設置label 的寬和高,也不會報錯,但是我們可能會遇到限制它最大寬度的時候怎么辦呢?連接最右邊的約束,然后找到該約束,雙擊它,然后到達下面??的圖:然后改Relation : 選最后一個就行,(也就是 大于等于的意思,小于等于作用相反,如果我們的文字從右邊對齊的話就用它了)


圖3.1


其他錯誤:

1.xib不能拖線,查看xib 的 class 是否 是當前類

2.如果都對,清除緩存

4.xib 能顯示,控件都為空nil ,查看關聯對象是否正確

5.xib 創建的view,600 * 600 不自動布局,xib 比例適配

2018.12.10 :突然發現了這個問題的另一原因:我們創建一個(控制器和控制器xib), 然后通過 addSubView: 的方式添加到當前控制器的時候,這個xib 也會出現這樣的問題。然而通過 push 或 modal 的方式卻不會,我猜想是(?push 或 modal?)已經給控制器 view 設置了 size,而我們?addSubView: 時卻沒有。

解決辦法是:addSubView:的時候,先給控制器的view 設置size,即可

本來xib 默認就是600 x 600, 然后呢,有人說是sizeclass 在作怪,但是好像我試了還是不行,后面是通過,布局子控件的比例相對于xib 本身的比例布局,然后也可以完美適配。創建該view的時候手動布局以下它的布局,用setNeedsUpdateConstraints 更新一下它子控件的約束即可。約束如圖:

步驟 1
步驟 2
步驟 3

6.xib 截圖不能截到它上面的圖

解決:查看該圖是否是它的子圖,或打斷點看看它是否有該圖

7.xib 有多個動態變化的 Label


8.xib 某個控件背景圖,隨著文字縮放(建議使用Button)效果如圖:


效果圖

如何設置:設置Button的 contentInsets


設置圖

9.xib 做tableHeaderView 但是和cell 重疊?

解決:1.查看headerView 是否是設置了frame,因為header沒有高度

? ? ? ? ? ? 2.給xib 一個height 約束


2

? ? ? ? ? ? 3.或者設置它的Autoresizing?


3

? ? ? ? ? ??

最后:

? 如果你使用過程中發現不對的地方請多多包涵,也歡迎指出不對之處;也非常歡迎在留言你所遇到的坑!感謝閱讀!

聲明:

本文屬于原創,轉載請注明出處!謝謝,如有侵權,請聯系刪除!謝謝??

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容