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

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

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的襄州網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

有三種情況:

1.每一列都是獨(dú)立的選取
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)聽選擇,只需要再實(shí)現(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é):沒有點(diǎn)選時的顯示數(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)航工具條,用于切換上一項(xiàng)、下一項(xiàng)等內(nèi)容。

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

隨機(jī)數(shù):

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

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

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

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

分享題目:IOS開發(fā)之PickerView文字和隨機(jī)數(shù)的使用
轉(zhuǎn)載來于:http://muchs.cn/article40/jcpjho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號虛擬主機(jī)、網(wǎng)站內(nèi)鏈、全網(wǎng)營銷推廣、手機(jī)網(wǎng)站建設(shè)、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)