兩個(gè)控制器版本
-
思路:兩個(gè)不同的控制器余耽,放兩個(gè)tableview然后其中一個(gè)加載子標(biāo)題,需要加載子標(biāo)題的的控制器苹熏,監(jiān)聽(tīng)被點(diǎn)擊的那個(gè)控制器碟贾。可以用代理來(lái)解決監(jiān)聽(tīng)事件轨域,當(dāng)tableview的某一個(gè)cell被點(diǎn)擊的時(shí)候把這個(gè)被點(diǎn)擊的cell的是哪一行傳出去袱耽。
-
復(fù)習(xí)代理
-
代理書(shū)寫格式
-
@protocol 代理名字(當(dāng)前類的名字 + Delegate) <NSObject>
@optionl (寫代理方法,代理要做什么事情干发?點(diǎn)擊category控制器把XCCategoryItem.subCategory數(shù)組傳出去)
@end
-
代理生成為屬性 需要遵守代理的協(xié)議朱巨,不然不可以實(shí)現(xiàn)代理的方法,注意代理用 ARC 下 week MAC 用 assign (用strong會(huì)一直持有對(duì)象不會(huì)釋放)
-
驗(yàn)證成為代理的方法有沒(méi)有實(shí)現(xiàn)代理的方法
if([self.delegate respondsToSelector:代理方法]){ 代理需要傳出的值是什么 }
-
-
需要加載子控制器的tableview實(shí)現(xiàn)代理方法枉长,把傳過(guò)來(lái)的子標(biāo)題冀续,加到一個(gè)數(shù)組中去,tableviewcell.textLabel的值就從這個(gè)數(shù)組中取必峰,在實(shí)現(xiàn)完代理方法之后洪唐,需要刷新一下表格。
-
用這個(gè)方法主要是為了復(fù)習(xí)代理方法和 addchildViewController
一個(gè)控制器解決 tableview聯(lián)級(jí)菜單
- 一個(gè)tableview的代理方法實(shí)現(xiàn)給兩個(gè)控制器做數(shù)據(jù)源吼蚁,需要判斷當(dāng)前表格是哪個(gè)表格
BUG和一些小問(wèn)題
- 加了導(dǎo)航欄的BUG
- 如果在一個(gè)控制器里加了兩個(gè)tableview凭需,然后在把一個(gè)導(dǎo)航控制的根控制器設(shè)置成加了兩個(gè)tableview的控制器,會(huì)出現(xiàn)一個(gè)正常顯示另一個(gè)錯(cuò)位,產(chǎn)生的原因:導(dǎo)航控制器會(huì)取出第一個(gè)控件給這第一個(gè)子控件加導(dǎo)航控制器粒蜈,并且?guī)臀覀冃薷牧说谝粋€(gè)控件的contentInset屬性(內(nèi)邊距的top加了64)顺献,所以第一個(gè)沒(méi)問(wèn)題,第二個(gè)控件沒(méi)有幫我添加枯怖,需要手動(dòng)修改contentInset屬性的top也加64
- UIScrollView也有這種問(wèn)題滚澜,系統(tǒng)會(huì)自動(dòng)幫我們添加一個(gè)
//自動(dòng)調(diào)整ScrollView的Insets
automaticallyAdjustsScrollViewInsets 屬性,這個(gè)屬性也會(huì)自動(dòng)幫我們?cè)黾?4嫁怀,并且默認(rèn)是yes设捐。 - 造成這些問(wèn)題的根本是導(dǎo)航控制器?還是導(dǎo)航欄塘淑?
-調(diào)整Insets是取決于在不在導(dǎo)航控制器環(huán)境下