我們今天的任務(wù):優(yōu)化咱們通訊錄的功能:(高能預(yù)警:本節(jié)代碼會比較多扯键,對于沒有編程基礎(chǔ)的同學(xué)閱讀可能會比較困難,我會對一些關(guān)鍵的代碼進行解釋硅确,其他必要的關(guān)于Swift語言的基礎(chǔ)內(nèi)容我可以先應(yīng)用,再熟悉以后再理解歸納)
優(yōu)化清單:
1. 通訊錄數(shù)據(jù)加載
2. 增加導(dǎo)航條
一打掘、通訊錄數(shù)據(jù)加載:
為了讓咱們的通訊錄看起來比較真實看成,我們?yōu)檫@10個通訊錄里的聯(lián)系人增加一個數(shù)據(jù)集君编,然后將數(shù)據(jù)集加到表格里,實際上這也是比較符合實際的項目例子的(實際項目中從后端接口獲取數(shù)據(jù)川慌,存放到數(shù)據(jù)集里吃嘿,再加載到表格里)
1. 準(zhǔn)備數(shù)據(jù):在ContactViewController.swift類里定義變量contactListBook,并且初始化數(shù)據(jù),為了方便同學(xué)們梦重,我將數(shù)據(jù)集提供在下方兑燥,可以直接拷貝。? 不過我還是建議自己親自寫一下琴拧,寫得過程中你會對字典降瞳,數(shù)組,健值對這些東西有更加深入的認識蚓胸。
let contactListBook:[[NSDictionary]] = [[
? ? ? ? ? ? ["name":"安琪拉","avatar":"default1","index":"A"],
? ? ? ? ? ? ["name":"阿偉","avatar":"default2","index":"A"],
? ? ? ? ? ? ["name":"骯臟的鐵騎","avatar":"default3","index":"A"]
? ? ? ? ],
? ? ? ? [
? ? ? ? ? ? ["name":"高力士","avatar":"default4","index":"G"],
? ? ? ? ? ? ["name":"高寒","avatar":"default5","index":"G"],
? ? ? ? ? ? ["name":"滾石樂隊","avatar":"default6","index":"G"]
? ? ? ? ],
? ? ? ? [
? ? ? ? ? ? ["name":"王子","avatar":"default7","index":"#"],
? ? ? ? ? ? ["name":"papi醬","avatar":"default8","index":"#"],
? ? ? ? ? ? ["name":"","avatar":"default9","index":"#"],
? ? ? ? ? ? ["name":"高長恭","avatar":"default10","index":"#"]
? ? ? ? ]]
2. 修改numerOfSections方法挣饥,將固定值改為通過變量獲取
3. 修改numberOfRowsInSection方法;
4. 加入和修改圖中標(biāo)注的代碼,此代碼用于動態(tài)的獲取Section的Title(獲取自我們每個Section的第一個(index為0)元素的key為index的字典)
5. 修改或添加圖中代碼赢织,將頭像和姓名通過動態(tài)獲取的方式設(shè)置給表格
注解:
1. contactListBook[indexPath.section][indexPath.row] : 從contactListBook的indexPath.section數(shù)組中獲取第indexPath.row個數(shù)組的數(shù)據(jù)亮靴。獲取的結(jié)果將是一個字典
2. 字典.value(forKey:"key") : 從字典中的指定key獲取對應(yīng)的value.
二、增加導(dǎo)航條
為了更好的看到導(dǎo)航條的效果于置,建議將書記字典加大【作為小作業(yè)自己完成以下吧】茧吊,我這里就不講了,我就直接將數(shù)據(jù)集加大八毯,增加了多條數(shù)據(jù)記錄
1.? 添加索引的字符串?dāng)?shù)據(jù)集
2. 點擊索引時的定位
3. 好了搓侄,今天的課程結(jié)束:Command + R 看下效果