国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

IOS 開發(fā)之PickerView文字和隨機數(shù)的使用

2019-10-21 18:45:05
字體:
供稿:網(wǎng)友

IOS 開發(fā)之PickerView文字和隨機數(shù)的使用

PickerView用于展示供選擇的內(nèi)容(例如日期選取、點菜等)。

有三種情況:

1.每一列都是獨立的選取
2.右邊的列受到左邊列的影響
3.包含圖片

PickerView和TableView類似,通過數(shù)據(jù)源來顯示數(shù)據(jù),與TableView同樣地,讓控制器稱為其數(shù)據(jù)源。

但是PickerView的數(shù)據(jù)源僅僅提供行數(shù)和列數(shù),在代理方法內(nèi)才能設(shè)置內(nèi)容。

通過兩個數(shù)據(jù)源方法設(shè)置行和列數(shù),通過一個代理方法來設(shè)定內(nèi)容,注意component表示第幾列:

這里的foods成員是一個復(fù)合數(shù)組,即NSArray內(nèi)又有多個NSArray,每個內(nèi)層的NSArray中放著一個類型的食物,不同內(nèi)層NSArray之間代表不同類型的食物。

要得到這樣的復(fù)合數(shù)組,可以直接建立,例如:

@[@[...],@[...],@[...]]; 

或者通過plist讀取

#pragma mark - PickerView數(shù)據(jù)源方法  // returns the number of 'columns' to display. - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{   return self.foods.count; }  // returns the # of rows in each component.. - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{   NSArray *foodArray = self.foods[component]; // component是列   return foodArray.count; }  #pragma mark - PickerView代理方法  - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{   return self.foods[component][row]; } 

要監(jiān)聽選擇,只需要再實現(xiàn)一個代理方法:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{   NSString *name = self.foods[component][row];   switch (component) {     case 0:       self.fruitLabel.text = name;       break;     case 1:       self.mainLabel.text = name;       break;     case 2:       self.drinkLabel.text = name;       break;     default:       break;   } } 

一個細(xì)節(jié):沒有點選時的顯示數(shù)據(jù)初始化:

間接利用上面的選擇方法來初始化數(shù)據(jù):每列都選中第0行,由于用不到pickerView本身,因此傳入nil也無妨。

for (int i = 0; i < self.foods.count; i++) {     [self pickerView:nil didSelectRow:0 inComponent:i];   } 

Tip:鍵盤上方常常用導(dǎo)航工具條,用于切換上一項、下一項等內(nèi)容。

直接獲取當(dāng)前的選取項:selectRowInComponent: 傳入列號可以得到選中的是第幾行。

隨機數(shù):

arc4random()可以產(chǎn)生0或者正整數(shù),要產(chǎn)生0 ~ (x-1)的隨機數(shù),應(yīng)該使用 arc4random( ) % x。

關(guān)于選擇層次的設(shè)計(選擇左邊右邊變化),是由代碼實現(xiàn)的(更換列的數(shù)據(jù))。

需要用到reloadAllComponents或者reloadComponent:方法。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西青区| 天等县| 泗水县| 高台县| 比如县| 专栏| 潼关县| 彭州市| 沿河| 来安县| 重庆市| 大埔区| 托克逊县| 利辛县| 德昌县| 兴仁县| 丹棱县| 如皋市| 潞城市| 南涧| 白沙| 十堰市| 石景山区| 九龙城区| 太仓市| 永泰县| 理塘县| 民和| 长寿区| 阿巴嘎旗| 遵义市| 宜宾县| 湛江市| 南川市| 苏尼特左旗| 永寿县| 永定县| 揭东县| 自贡市| 绥宁县| 玉林市|