UIPickView和UIDatePicker

一、介紹UIPickView和UIDatePicker

1.UIPickView什么時(shí)候用?

?通常在注冊(cè)模塊,當(dāng)用戶(hù)需要選擇一些東西的時(shí)候,比如說(shuō)城市,往往

彈出一個(gè)PickerView給他們選擇蚀同。?老虎機(jī)效果

2.UIPickView常見(jiàn)用法,演示實(shí)例程序1>獨(dú)立的,沒(méi)有任何關(guān)系=>菜單系統(tǒng)。2>相關(guān)聯(lián)的,下一列和第一列有聯(lián)系=>省會(huì)城市選擇3>圖文并帽,=>國(guó)旗選擇叉存。

3.UIPickView


4.UIDatePicker什么時(shí)候用?當(dāng)用戶(hù)選擇日期的時(shí)候,一般彈出一個(gè)UIDatePicker給用戶(hù)選擇撑毛。

5.UIDatePickerios6和ios7的區(qū)別


二恋脚、點(diǎn)餐系統(tǒng)PickerView(熟悉)

1.搭建界面

? ? ?1>注意點(diǎn):PickerView的高度不能改,默認(rèn)162,PickerView里面每行的高度

? ? ? ? ? 可以改,不要弄混淆了恋腕。

2.pickerView顯示數(shù)據(jù)

? ? ?1>如何使用PickerView展示數(shù)據(jù)?

? ? ? ? ? 進(jìn)入PickerView頭文件,有數(shù)據(jù)源和代理,聯(lián)想到UITableView,模仿UITableView的用法抹锄。

? ? ? 2>讓控制器作為PickerView的數(shù)據(jù)源,控制器遵守PickerView的數(shù)據(jù)源方法

? ? ? ? ? ?2.1>兩種方式:1.拖線(xiàn)2.代碼

? ? ? ? ? ?2.2>系統(tǒng)自帶的控件,數(shù)據(jù)源和代理屬性不需要IBOutlet,也能拖

? ? ? ? ? ? ? ? ? ?線(xiàn)。自己的屬性,想要拖線(xiàn),必須寫(xiě)IBOutlet荠藤。

? ? ? 3> PickerView的數(shù)據(jù)源方法

? ? ? ? ? ? ? ? 1> numberOfComponentsInPickerView:返回多少列

? ? ? ? ? ? ? ? 2> pickerView:numberOfRowsInComponent:返回第component列有多少行 ? ? ?

? ? ? ? ? ? ? ? 3>和UITableView的區(qū)別,每一行長(zhǎng)什么樣,是由PickerView的代理決定的伙单。

? ? ? ? ? ? ? ? 4>注意:如果沒(méi)有返回每一行長(zhǎng)什么樣子,每行就會(huì)顯示?,看見(jiàn)?,就

? ? ? ? ? ? ? ? ? ? ?知道沒(méi)有實(shí)現(xiàn)每一行長(zhǎng)什么樣子的方法。

? ? ? 4> PickerView的代理方法

1>返回第component列第row行長(zhǎng)什么樣哈肖。

第component列第row行的展示標(biāo)題

- (NSString*)pickerView:(UIPickerView*)pickerView

titleForRow:(NSInteger)row forComponent:(NSInteger)component

第component列第row行帶屬性的標(biāo)題

- (NSAttributedString*)pickerView:(UIPickerView*)pickerView

attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)

component

第component列第row行展示的視圖

- (UIView*)pickerView:(UIPickerView*)pickerView

viewForRow:(NSInteger)row forComponent:(NSInteger)component

reusingView:(UIView*)view;

2>返回第component列每一行的高度和寬度

- (CGFloat)pickerView:(UIPickerView*)pickerView

- (UIView*)pickerView:(UIPickerView*)pickerView

viewForRow:(NSInteger)row forComponent:(NSInteger)component

reusingView:(UIView*)view;

2>返回第component列每一行的高度和寬度

- (CGFloat)pickerView:(UIPickerView*)pickerView

widthForComponent:(NSInteger)component;

- (CGFloat)pickerView:(UIPickerView*)pickerView

rowHeightForComponent:(NSInteger)component;

3>選中第component列第row行調(diào)用

- (void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row

inComponent:(NSInteger)component;

3.加載plist數(shù)據(jù)

? ?1>分析數(shù)據(jù)結(jié)構(gòu)

? ? ? ? ?1>大數(shù)組元素個(gè)數(shù):多少列?

? ? ? ? ?2>大數(shù)組里面的小數(shù)組:這一列有多少行吻育。

? ? ? ? ?3>小數(shù)組里的字符串:每行展示的樣子

?4.處理菜單選中業(yè)務(wù)

? ? ? ? 1>選中某一列某一行,顯示出來(lái)

? ? ? ? 2>拖動(dòng)不同列,改變不同的label,拖動(dòng)第一列改變水果。

? ? ? ? 3>判斷拖動(dòng)哪一列,改變對(duì)應(yīng)的label

? ? ? ? 4>在viewDidLoad中初始化label顯示

? ? ? ? ?5>取出數(shù)組中的數(shù)據(jù)給label直接賦值_fruitLabel.text=self.foots[0][0];這種方式不好,如果以后數(shù) ? ? ? ? ? ? ? 組里有很多數(shù)據(jù),要寫(xiě)很多行牡彻。

? ? ? ? ?6>還有另外一種方式,通過(guò)調(diào)用代理,給label賦值.唯一不同的,就是列

? ? ? ? ? ? ? 數(shù),搞個(gè)for循序就好了扫沼。

5.隨機(jī)選中某一列的某一行

? ? ? ? 1>如何選中某一行[self.pickerView selectRow:row inComponent:componentanimated:YES];

? ? ? ? 2>先隨機(jī)選中第0列的某一行,隨機(jī)數(shù)取值范圍看第0列總共有多少行,arc4random_uniform(x)隨機(jī) ? ? ? ? ? ? 0~x-1的數(shù)

? ? ? ? ?3>避免隨機(jī)出來(lái)的行數(shù)都一樣,需要判斷下,隨機(jī)出來(lái)的行數(shù)和當(dāng)前選中的是否一樣,一樣就重新隨機(jī), ? ? ? ? ? ? ? 用while判斷,直到隨機(jī)到不一樣,才行。

? ? ? ? ?4>問(wèn)題:label沒(méi)有顯示最新選中的一行庄吼。

? ? ? ? ? ? ? 原因:手動(dòng)調(diào)用pickview滾動(dòng),選中某一行,不會(huì)觸發(fā)代理,我們自己主動(dòng)調(diào)用代理,讓lebel顯示選中 ? ? ? ? ? ? ? ?哪一行.

? ? ? ? ? ? ? ?注意:只有用戶(hù)手動(dòng)滾動(dòng)才可以觸發(fā)pickview的代理方法。

? ? ? ? ?5>每一列都要隨機(jī)選中,弄個(gè)for循 ? ? ? ? ? ? ? ? ? 序,遍歷每一列都隨機(jī)選中


三严就、選擇國(guó)旗(熟悉)

1.搭建界面

2.設(shè)置pickerView的數(shù)據(jù)源3.分析有多少列,只有一列,因?yàn)槭俏淖趾蛨D片是同時(shí)滾動(dòng),如果兩列的話(huà),不會(huì)同時(shí)滾動(dòng)

4.加載plist數(shù)據(jù),分析數(shù)據(jù)結(jié)構(gòu)

plist是個(gè)數(shù)組:返回這一列有多少行國(guó)旗

數(shù)組里是一個(gè)字典:描述著國(guó)旗的屬性

5.字典轉(zhuǎn)模型

6.有了數(shù)據(jù)就需要把數(shù)據(jù)展示到界面,不能用返回每行標(biāo)題的方法

7.搞一個(gè)View,每行需要展示一個(gè)標(biāo)題和圖片

8.自定義view,系統(tǒng)自帶的UIView,不好使

9.用xib描述自定義view,里面控件是固定的

10.設(shè)置每行的高度為4411.返回每行cell樣子的代理方法,reusingView在ios7沒(méi)有效果,view永遠(yuǎn)都是

空,沒(méi)有做緩存总寻。

四 鍵盤(pán)處理

1.搭建界面

2.文本框不可以讓用戶(hù)編輯

? ?2.1不能設(shè)置enable= NO,鍵盤(pán)不能彈出來(lái)

? ?2.2通過(guò)代理,不允許用戶(hù)輸入,只有生日和城市不需要用戶(hù)輸入,添加一個(gè)判斷

3.自定義生日鍵盤(pán)

? ?3.1 UIDatePicker基本使用,模式,地區(qū)3.2監(jiān)聽(tīng)UIDatePicker的事件,繼承UIControl,直接addTarget

? ?3.3日期格式對(duì)象,把date轉(zhuǎn)換字符串,顯示到文本框

4.自定義城市鍵盤(pán)

? ?4.1 UIPickerView,展示數(shù)據(jù)需要設(shè)置數(shù)據(jù)源和代理

? ?4.2解析plist數(shù)據(jù),分析數(shù)據(jù)結(jié)構(gòu)plist是個(gè)數(shù)組,表示有多少個(gè)省份數(shù)組里是一個(gè)字典,里面包含省份的信 ? ? ? ? ? ?息,名稱(chēng)和城市列表

? ?4.3實(shí)現(xiàn)數(shù)據(jù)源和代理,把數(shù)據(jù)展示到視圖

? ?4.4和之前的點(diǎn)餐不一樣,之前直接能獲取到每一列有多少行,這里需要判斷當(dāng)前是哪一列,根據(jù)第0列獲取 ? ? ? ? ? 第1列的行數(shù),第0列是省,第1列是城市,城市由省決定

? ?4.5返回第component列多少行

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{

if (component == 0) { // 描述省會(huì)

return self.provinces.count;

}else{ // 描述選中的省會(huì)的城市

// 獲取省會(huì)

XMGProvince *p = self.provinces[_proIndex];

return p.cities.count;

}

}

? ? 4.6返回第component列第row行的標(biāo)題,這里的行號(hào)可能是第0列的和第1列的,需要做判斷。第0列的 ? ? ? ? ? ? ?row,表示是哪個(gè)省,第1列的row,表示是當(dāng)前第1列選中的省會(huì)的哪個(gè)城市梢为。

? ? ? ? ?第0列,省會(huì)的標(biāo)題,取決于省會(huì)數(shù)組行號(hào)

? ? ? ? ?第1列,城市的標(biāo)題,取決于當(dāng)前選中哪個(gè)省

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

if (component == 0) { // 描述省會(huì)

// 獲取省會(huì)

XMGProvince *p = self.provinces[row];

return p.name;

}else{ // 描述選中的省會(huì)的城市

// 獲取選中的省會(huì)的角標(biāo)

NSInteger index = [pickerView selectedRowInComponent:0];

// 獲取選中省會(huì)

XMGProvince *p = self.provinces[_proIndex];

// 當(dāng)前選中的內(nèi)蒙古省渐行,只有12個(gè)城市,角標(biāo)0~11铸董,但是右邊城市是北京祟印,北京的城市大于12個(gè)城市,所以滾動(dòng)的時(shí)候會(huì)出現(xiàn)越界粟害。

NSLog(@"province:%@, count:%ld row:%ld",p.name,p.cities.count,row);

#warning TODO:

return p.cities[row];

}

}

? ? ?4.7解決二級(jí)聯(lián)動(dòng)的問(wèn)題,兩列同時(shí)滾動(dòng),會(huì)報(bào)角標(biāo)越界錯(cuò)誤

? ? ? ? 原因:返回每一行的樣子的代理方法會(huì)經(jīng)常調(diào)用,只要有新的一行出現(xiàn)就會(huì)調(diào)用蕴忆。這里每次都會(huì)獲取最 ? ? ? ? ? 新選中的省,而第0列展示的是之前選中的省會(huì),如果最新選中的省會(huì)的城市總數(shù)小于之前選中的省會(huì)。

? ? ? ? 假設(shè):最新選中的城市只有有4個(gè),但是之前選中的省會(huì)城市有10行,當(dāng)?shù)?列滾到5就會(huì)報(bào)角標(biāo)越界錯(cuò) ? ? ? ? ? ? ?誤悲幅。

? ? ? ? ? 解決方式:這里不能獲取最新的選中省會(huì),需要記錄之前選中的,且只需要記錄一次,在選中一行的代理 ? ? ? ? ? 方法里記錄套鹅。

? ? ? ? ? ?注意:在刷新城市之前記住省會(huì)角標(biāo),應(yīng)該刷新的城市,是當(dāng)前選中的省會(huì)的城市。

? 4.8監(jiān)聽(tīng)城市選擇,選中新的省會(huì)汰具。

? ? ? ? 1>記錄選中的省會(huì)

? ? ? ? 2>刷新第1列

? ? ? ? 3>第一列默認(rèn)選中第一個(gè)城市

? ? ? ? ?4>把選中的省會(huì)和獲取選中的城市顯示到文本框

5.添加自定義鍵盤(pán)工具條

? ? ? ? 5.1封裝工具條:繼承UIView,原因:不讓外界知道里面是什么東西,就不能修改Toolbar里面的東西卓鹿。

? ? ? ? 5.2固定的,用xib述,并且 供類(lèi)方法快速創(chuàng)建對(duì)象

? ? ? ? 5.3整個(gè)文本框應(yīng)該擁有同一個(gè)鍵盤(pán)工具條,懶加載一個(gè)鍵盤(pán)工具條,然后遍歷所有的文本框,搞個(gè)可變 ? ? ? ? ? ? ? ?數(shù)組把所有文本框添加到數(shù)組

? ? ? ? 5.4監(jiān)聽(tīng)item點(diǎn)擊,通過(guò)代理通知控制器。

? ? ? ? 5.5當(dāng)點(diǎn)擊下一個(gè),應(yīng)該是后面的文本框有彈出鍵盤(pán),成為第一響應(yīng)者,怎么判斷下一個(gè)文本框是誰(shuí)?

? ? ? ? ? ? ? ○把所有文本框加入到數(shù)組中,記錄當(dāng)前彈出鍵盤(pán)的文本框所在的角標(biāo),++就是下一個(gè)文本框了留荔。

? ? ? ? ? ? ? ○在文本框開(kāi)始編輯的時(shí)候,記錄,編輯的文本框就是彈出鍵盤(pán)的文本框

? ? ? ? ?5.6解決角標(biāo)越界的問(wèn)題,當(dāng)當(dāng)前彈出鍵盤(pán)的文本框是第一個(gè)角標(biāo)的時(shí)候,上一個(gè)不允許點(diǎn)擊


五吟孙、項(xiàng)目中的常見(jiàn)文件


六、UIApplication

1.什么是UIApplication?

注意:UIApplication不能手動(dòng)創(chuàng)建,不能alloc init,一個(gè)應(yīng)用程序只允許

一個(gè)。

為什么要弄成單例,UIApplication對(duì)象是用來(lái)設(shè)置應(yīng)用全局信息的,一個(gè)

應(yīng)用程序如果有很多UIApplication對(duì)象,都不知道聽(tīng)誰(shuí)的杰妓。

驗(yàn)證:單例和不能alloc,init

2.UIApplication的作用:做應(yīng)用級(jí)別的操作

2.1>設(shè)置應(yīng)用圖標(biāo)右上角的數(shù)字,圖標(biāo)需要手動(dòng)清除,應(yīng)用程序關(guān)閉,不

會(huì)自動(dòng)清除.

applicationIconBadgeNumber

2.2>顯示聯(lián)網(wǎng)狀態(tài),告訴用戶(hù)此應(yīng)用正在聯(lián)網(wǎng)networkActivityIndicatorVisible

2.3>打開(kāi)一個(gè)資源3.URL:一個(gè)資源的唯一路徑

3.1>網(wǎng)絡(luò)資源URL的組成==協(xié)議頭://主機(jī)域名/路徑http://www.baidu.com/abc/1.png

3.2>本地資源URL的組成==協(xié)議頭:///路徑 本機(jī)域名可以不寫(xiě)file:///User/apple/Desktop/1.png

4.UIApplication打開(kāi)資源的好處:不用判斷用什么軟件打開(kāi),系統(tǒng)會(huì)自動(dòng)根據(jù)協(xié)議頭判斷藻治。

5.UIApplication管理狀態(tài)欄.PPT演示

5.1> ios7默認(rèn)交給控制器,需要配置下,不交給控制器管理,就會(huì)交個(gè)UIApplication管理。

5.2>動(dòng)畫(huà)隱藏狀態(tài)欄

5.3>動(dòng)畫(huà)設(shè)置狀態(tài)欄樣式

七稚失、UIApplication的Delegate

1.AppDelegate的作用:

?為什么要搞個(gè)AppDelegate,代理設(shè)計(jì)模式,有些事情自己不想處理,交

給別人處理

?怎么成為UIApplication的代理,遵守協(xié)議栋艳。

2.在哪設(shè)置UIApplication的代理,需要了解ios程序的啟動(dòng)過(guò)程.

2.1>創(chuàng)建application,創(chuàng)建并且設(shè)置application的代理

2.2>開(kāi)啟事件循環(huán),不斷監(jiān)聽(tīng)事件。如果產(chǎn)生系統(tǒng)事件,就會(huì)通知代

理,其他事件,會(huì)找到一個(gè)最合適的視圖處理事件句各。2.3>只有應(yīng)用程序關(guān)閉,才會(huì)結(jié)束程序

3.UIApplicationMain函數(shù):PPT演示

?注意UIApplicationMain函數(shù)會(huì)開(kāi)啟一個(gè)事件循環(huán),并不會(huì)馬上就執(zhí)行完

畢吸占。

?底層做的事情,創(chuàng)建UIApplication對(duì)象和UIApplicationDelegate對(duì)象,設(shè)置

UIApplication的代理,開(kāi)啟事件循環(huán),監(jiān)聽(tīng)系統(tǒng)事件。

3.1>delegateClassName不能傳nil,這里傳nil,意味著application沒(méi)有代理,就無(wú)法監(jiān)聽(tīng)系統(tǒng)的事件,系統(tǒng)的事件都沒(méi)法監(jiān)聽(tīng),窗口都不知道什么時(shí)候去加載,因?yàn)橐晥D都是懶加載的,因此就不會(huì)創(chuàng)建窗口,什么東西都沒(méi)有凿宾。

3.2>principalClassName傳nil,默認(rèn)是UIApplication,創(chuàng)建一個(gè)

UIApplication對(duì)象矾屯。

4.UIApplication代理的作用:處理系統(tǒng)事件,不是任何事件都交給他處理,按

鈕點(diǎn)擊,屏幕點(diǎn)擊都不是他處理,是由UIApplication處理。

2.1>加載完成,初始化的操作

2.2>進(jìn)入后臺(tái):一般在這里保存應(yīng)用的數(shù)據(jù)(游戲數(shù)據(jù),比如暫停游戲)

2.3>內(nèi)存警告:清空不必要的內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初厚,一起剝皮案震驚了整個(gè)濱河市件蚕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌产禾,老刑警劉巖排作,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異亚情,居然都是意外死亡妄痪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)楞件,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衫生,“玉大人,你說(shuō)我怎么就攤上這事土浸∽镎耄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵黄伊,是天一觀的道長(zhǎng)泪酱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毅舆,這世上最難降的妖魔是什么西篓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮憋活,結(jié)果婚禮上岂津,老公的妹妹穿的比我還像新娘。我一直安慰自己悦即,他們只是感情好吮成,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布橱乱。 她就那樣靜靜地躺著,像睡著了一般粱甫。 火紅的嫁衣襯著肌膚如雪泳叠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天茶宵,我揣著相機(jī)與錄音危纫,去河邊找鬼。 笑死乌庶,一個(gè)胖子當(dāng)著我的面吹牛种蝶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞒大,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼螃征,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了透敌?” 一聲冷哼從身側(cè)響起盯滚,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酗电,沒(méi)想到半個(gè)月后魄藕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撵术,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年泼疑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荷荤。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖移稳,靈堂內(nèi)的尸體忽然破棺而出蕴纳,到底是詐尸還是另有隱情,我是刑警寧澤个粱,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布古毛,位于F島的核電站,受9級(jí)特大地震影響都许,放射性物質(zhì)發(fā)生泄漏稻薇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一胶征、第九天 我趴在偏房一處隱蔽的房頂上張望塞椎。 院中可真熱鬧,春花似錦睛低、人聲如沸案狠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骂铁。三九已至吹零,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拉庵,已是汗流浹背灿椅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钞支,地道東北人茫蛹。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像伸辟,于是被迫代替她去往敵國(guó)和親麻惶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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