iOS采用UITableView和UIScrollView來實(shí)現(xiàn)Excel茎匠、課程表的上下左右聯(lián)動(dòng)效果

前言
在項(xiàng)目中遇到了許多報(bào)表格仲,雖然目前只是一個(gè)簡(jiǎn)單的展示,可以用tableView單元格顯示诵冒,滿足目前的需求抓狭,但是我仔細(xì)考慮了,能不能實(shí)現(xiàn)類似Excel表那樣展示造烁,既可以左右滑動(dòng),又可以上下滑動(dòng)午笛,當(dāng)時(shí)找了許多資料惭蟋,也找了許多國(guó)外網(wǎng)站的資料,卻找不到這樣類似的開源項(xiàng)目药磺,不過后面在code4app發(fā)現(xiàn)了UITableViewLinkageDemo告组,但是仔細(xì)研究代碼后,發(fā)現(xiàn)其內(nèi)部復(fù)用性是個(gè)問題同時(shí)不能支持上下拉刷新等癌佩,后面在github這個(gè)demo的作者提了一些我的想法木缝,最終我決定自己去實(shí)現(xiàn)一個(gè)類似Excel的控件,因此結(jié)合UITableViewLinkageDemo的思想围辙,去摸索我碟,最終實(shí)現(xiàn)了這樣的控件--YWExcel
YWTableExcel 相對(duì)YWExcel 使用更加方便和api更豐富https://github.com/flyOfYW/YWTableExcel

效果圖


ezgif-4-a09e4eaf14.gif

一 整體描述圖


QQ20180817-125308.png

1姚建、紅色部分為:UITableView
2 藍(lán)色部分:UITableViewCell
3 黃色部分:UISrollView
4 類目那一行:目前設(shè)置2個(gè)模式
1)作為獨(dú)立tableView之上的view
2)作為tableView的組頭View

二 設(shè)計(jì)聯(lián)動(dòng)的思路
在 -(void)scrollViewDidScroll:(UIScrollView *)scrollView
監(jiān)聽偏移量矫俺,去改變其他scrollView的偏移量,那么采用什么方式去改變其他的偏移量呢掸冤,三種方式:block厘托、delegate,NSNotificationCenter
最初的時(shí)候稿湿,我使用了block铅匹,但是發(fā)現(xiàn)并沒實(shí)現(xiàn)我想要的那種效果,后來我就重新梳理下思路饺藤,scrollView添加在cell上包斑,但是cell是多個(gè)流礁,想一個(gè)cell上的scrollView改變偏移量,同時(shí)能改變其他cell上的scrollView的偏移量的這樣場(chǎng)景下(一對(duì)多的關(guān)系)舰始,就使用NSNotificationCenter的方法去實(shí)現(xiàn)聯(lián)動(dòng)

注意點(diǎn):使用NSNotificationCenter的第一個(gè)版本崇棠,效果確實(shí)出來,但是遇到一個(gè)bug丸卷,因?yàn)楫?dāng)時(shí)使用的通知名稱是寫”死“ 如:

   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollMove:) name:@"cellNotification" object:nil];

這樣就會(huì)造成一個(gè)界面有多個(gè)表格(YWExcelView的對(duì)象)的情況下枕稀,就會(huì)造成通知混亂。

因此谜嫉,現(xiàn)在這個(gè)版本萎坷,使用當(dāng)前對(duì)象的指針地址作為通知中的name

    _NotificationID = [NSString stringWithFormat:@"%p",self];    
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollMove:) name:_NotificationID object:nil];

這樣就可以確保每個(gè)YWExcelView的對(duì)象的通知中心都是獨(dú)立的,互不影響

三 使用方法
跟tableView的用法差不多

typedef NS_ENUM(NSInteger, YWExcelViewStyle) {
    YWExcelViewStyleDefalut = 0,//整體表格滑動(dòng)沐兰,上下哆档、左右均可滑動(dòng)(除第一列不能左右滑動(dòng)以及頭部View不能上下滑動(dòng)外)
    YWExcelViewStylePlain,//整體表格滑動(dòng),上下住闯、左右均可滑動(dòng)(除第一行不能上下滑動(dòng)以及頭部View不能上下滑動(dòng)外)
    YWExcelViewStyleheadPlain,//整體表格(包括頭部View)滑動(dòng)瓜浸,上下、左右均可滑動(dòng)(除第一列不能左右滑動(dòng)外)
    YWExcelViewStyleheadScrollView,//整體表格(包括頭部View)滑動(dòng)比原,上下插佛、左右均可滑動(dòng)
};

@protocol YWExcelViewDataSource<NSObject>
@required
//多少行
- (NSInteger)excelView:(YWExcelView *)excelView numberOfRowsInSection:(NSInteger)section;
//多少列
- (NSInteger)itemOfRow:(YWExcelView *)excelView;
@optional
- (void)excelView:(YWExcelView *)excelView label:(UILabel *)label textAtIndexPath:(YWIndexPath *)indexPath;
- (void)excelView:(YWExcelView *)excelView headView:(UILabel *)label textAtIndexPath:(YWIndexPath *)indexPath;
//分組
- (NSInteger)numberOfSectionsInExcelView:(YWExcelView *)excelView;
@end

@protocol YWExcelViewDelegate <NSObject>


@optional

//自定義每列的寬度/默認(rèn)每列的寬度為80
- (NSArray *)widthForItemOnExcelView:(YWExcelView *)excelView;

@end

demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市量窘,隨后出現(xiàn)的幾起案子雇寇,更是在濱河造成了極大的恐慌,老刑警劉巖蚌铜,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锨侯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冬殃,警方通過查閱死者的電腦和手機(jī)囚痴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來造壮,“玉大人渡讼,你說我怎么就攤上這事《担” “怎么了成箫?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)旨枯。 經(jīng)常有香客問我蹬昌,道長(zhǎng),這世上最難降的妖魔是什么攀隔? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任皂贩,我火速辦了婚禮栖榨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘明刷。我一直安慰自己婴栽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布辈末。 她就那樣靜靜地躺著愚争,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挤聘。 梳的紋絲不亂的頭發(fā)上轰枝,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音组去,去河邊找鬼鞍陨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛从隆,可吹牛的內(nèi)容都是我干的诚撵。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼键闺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼砾脑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艾杏,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盅藻,沒想到半個(gè)月后购桑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氏淑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年勃蜘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片假残。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缭贡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辉懒,到底是詐尸還是另有隱情阳惹,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布眶俩,位于F島的核電站莹汤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颠印。R本人自食惡果不足惜纲岭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一抹竹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧止潮,春花似錦窃判、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仅偎,卻和暖如春跨蟹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背橘沥。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工窗轩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人座咆。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓痢艺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親介陶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堤舒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽明先生_X自主閱讀 15,969評(píng)論 3 119
  • 一哺呜、簡(jiǎn)介 <<UITableView(或簡(jiǎn)單地說舌缤,表視圖)的一個(gè)實(shí)例是用于顯示和編輯分層列出的信息的一種手段 <<...
    無邪8閱讀 10,590評(píng)論 3 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 沒有一種幸福的背后,不站著一個(gè)曾經(jīng)咬緊牙根的堅(jiān)定靈魂某残。 它會(huì)告訴你国撵,這世界比你想象中寬闊,你的人生不會(huì)沒有出口玻墅。 ...
    raner閱讀 525評(píng)論 0 0
  • 每個(gè)人在青春年少的時(shí)候介牙,也許都有過一個(gè)階 段,覺得這個(gè)世界上沒有人了解自己澳厢。 我們憧憬著將來會(huì)遇到一個(gè)人环础,他愛我,...
    夢(mèng)雙眸閱讀 360評(píng)論 3 8