ViewController xib中多個view 使用instantiateWithOwner導致死循環(huán)

問題描述: VC的xib中有一個UITabelView, vc的.m文件設置tableView的SectionHeader .
自定義的Header和vc的view放在一個xib文件中, 加載view的時候出現(xiàn)死循環(huán)

// 無限調(diào)用, 引發(fā)死循環(huán)
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
   ZTLLog(@"%@",self.view);
   UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
// 在這里通過 instantiateWithOwner:nil 加載view
   OrderHeader *view = [nib instantiateWithOwner:nil options:nil][1];
   return _testV;
}

一開始想不通問題出在哪里, 各種搜索引擎搜索過也沒有發(fā)現(xiàn)類似的情況, 大概沒有很多人喜歡把好多view放在一個xib文件中(其實省文件沒什么必要)
后來查詢文檔發(fā)現(xiàn)這么一句話

文檔

在調(diào)用完instantiateWithOwner方法后, self.view的值會由新的view覆蓋掉.
這就很有意思了, view中有tableView, tableView調(diào)用viewForHeaderInSection,
然后self.view又被重新賦值, 接著也就引發(fā)了死循環(huán).
log self.view

秉著發(fā)現(xiàn)問題就要解決問題的原則(其實就是想折騰一下), 我想到了既然使用instantiateWithOwner:options:會自行改變self.view的指向, 那么我只調(diào)用一次不就好了嗎? 于是我吧代碼改成了在viewDidLoad中調(diào)用一次instantiateWithOwner:options:, 并且用一個數(shù)組把instantiateWithOwner:options:的返回值存起來供調(diào)用的方式

- (void)viewDidLoad {
    [super viewDidLoad];
    UINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
    _views = [NSArray arrayWithArray:[nib instantiateWithOwner:self options:nil]];
    ZTLLog(@"self.view ---new%@",self.view);
    [self addTableView];
    
}

在這之后再通過代碼的方式添加TableVIew的形式.結(jié)果項目是可以運行了, 但是又出現(xiàn)了新問題.

// 我在 viewForHeaderInSection  中通過調(diào)用
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    OrderHeader *view = self.views[1];
    ZTLLog(@"OrderHeader%@",view);
    return view;
}

因為self.nib值是不變的, 那么我返回的view一直也就是那么一個, 那么一個tableView刷下來就只有最后一個section會有header了, 這情況著實尷尬. 但是這樣的情況也讓我發(fā)現(xiàn), 如果不是那種需要復用的view, 比如登錄頁面要彈點動畫出來等等, 又不想用代碼來, 就可以用這樣的方式, 也算是加快開發(fā)進度了.

最后我選擇了把class也寫在vc中, 然后另起xib的文件來放header和footer.

其實這個問題的解決方法很多, 另外寫xib, 或者直接在tableView:viewForFooterInSection:
中寫樣式什么都是可以的, 相對來說是比較初級的問題, 寫這篇博客也是發(fā)現(xiàn)這個問題有點好玩, 順便記錄一下發(fā)現(xiàn)的問題

另外還有l(wèi)oadNibNamed:owner:也會造成類似的問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末末患,一起剝皮案震驚了整個濱河市柒爵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驹暑,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件息罗,死亡現(xiàn)場離奇詭異闪萄,居然都是意外死亡,警方通過查閱死者的電腦和手機挡毅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暴构,“玉大人跪呈,你說我怎么就攤上這事段磨。” “怎么了庆械?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵薇溃,是天一觀的道長。 經(jīng)常有香客問我缭乘,道長沐序,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任堕绩,我火速辦了婚禮策幼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奴紧。我一直安慰自己特姐,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布黍氮。 她就那樣靜靜地躺著唐含,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沫浆。 梳的紋絲不亂的頭發(fā)上捷枯,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音专执,去河邊找鬼淮捆。 笑死,一個胖子當著我的面吹牛本股,可吹牛的內(nèi)容都是我干的攀痊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼拄显,長吁一口氣:“原來是場噩夢啊……” “哼苟径!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躬审,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤涩笤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盒件,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡舱禽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年炒刁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誊稚。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡翔始,死狀恐怖罗心,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情城瞎,我是刑警寧澤渤闷,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站脖镀,受9級特大地震影響飒箭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜒灰,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一弦蹂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧强窖,春花似錦凸椿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咙崎,卻和暖如春优幸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叙凡。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工劈伴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人握爷。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓跛璧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親新啼。 傳聞我的和親對象是個殘疾皇子追城,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,631評論 1 9
  • 引言 這兩天突然想起之前看到過有的項目中用到了object, 好奇心起,就順便回溯下xib的使用吧 xib優(yōu)缺點分...
    舞動夢想閱讀 1,932評論 0 3
  • 1.自定義控件 a.繼承某個控件 b.重寫initWithFrame方法可以設置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,349評論 2 4
  • 你可回頭看過我,我就在后面望著你。 可終究你還是沒有回頭燥撞, 而是寵溺的笑看著旁邊比我遜色的女子 我看到這一幕 感...
    浮夢笙閱讀 194評論 0 0