91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IOS 開發之PickerView文字和隨機數的使用

發布時間:2020-08-27 18:17:21 來源:腳本之家 閱讀:132 作者:lqh 欄目:移動開發

IOS 開發之PickerView文字和隨機數的使用

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

有三種情況:

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

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

但是PickerView的數據源僅僅提供行數和列數,在代理方法內才能設置內容。

通過兩個數據源方法設置行和列數,通過一個代理方法來設定內容,注意component表示第幾列:

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

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

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

或者通過plist讀取

#pragma mark - PickerView數據源方法 
 
// 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]; 
} 

要監聽選擇,只需要再實現一個代理方法:

- (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; 
  } 
} 

一個細節:沒有點選時的顯示數據初始化:

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

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

Tip:鍵盤上方常常用導航工具條,用于切換上一項、下一項等內容。

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

隨機數:

arc4random()可以產生0或者正整數,要產生0 ~ (x-1)的隨機數,應該使用 arc4random( ) % x。

關于選擇層次的設計(選擇左邊右邊變化),是由代碼實現的(更換列的數據)。

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大方县| 孟州市| 崇明县| 中山市| 隆安县| 清远市| 罗山县| 通山县| 饶平县| 双辽市| 双鸭山市| 承德市| 贵德县| 吉安市| 阳泉市| 原阳县| 贡山| 济阳县| 沙坪坝区| 襄垣县| 突泉县| 临澧县| 镇坪县| 交城县| 福安市| 峨山| 深水埗区| 汽车| 禄劝| 红原县| 广安市| 德保县| 双牌县| 乡宁县| 黔西| 册亨县| 青州市| 涞源县| 贵南县| 安陆市| 依安县|