UIPickerView的使用(一)

来源:http://www.cnblogs.com/jukaiit/archive/2016/02/24/5213499.html
-Advertisement-
Play Games

簡介:UIPickerView是一個選擇器控制項,它比UIDatePicker更加通用,它可以生成單列的選擇器,也可生成多列的選擇器,而且開發者完全可以自定義選擇項的外觀,因此用法非常靈活。UIPickerView直接繼承了UIView,沒有繼承UIControl,因此,它不能像UIControl那樣


 

簡介:UIPickerView是一個選擇器控制項,它比UIDatePicker更加通用,它可以生成單列的選擇器,也可生成多列的選擇器,而且開發者完全可以自定義選擇項的外觀,因此用法非常靈活。UIPickerView直接繼承了UIView,沒有繼承UIControl,因此,它不能像UIControl那樣綁定事件處理方法,UIPickerView的事件處理由其委托對象完成。使用UIPickerView的對象應該遵守UIPickerViewDataSource,UIPickerViewDelegate。 

一、UIPickerView控制項常用的屬性和方法如下:


Ø numberOfComponents:獲取UIPickerView指定列中包含的列表項的數量。該屬性是一個只讀屬性。 
  
Ø showsSelectionIndicator:該屬性控制是否顯示UIPickerView中的選中標記(以高亮背景作為選中標記)。 

Ø - numberOfRowsInComponent::獲取UIPickerView包含的列數量。 
  
Ø - rowSizeForComponent::獲取UIPickerView包含的指定列中列表項的大小。該方法返回一個CGSize對象。 

Ø - selectRow:inComponent:animated::該方法設置選中該UIPickerView中指定列的特定列表項。最後一個參數控制是否使用動畫。 
  
Ø - selectedRowInComponent::該方法返回該UIPickerView指定列中被選中的列表項。 
  
Ø - viewForRow:forComponent::該方法返回該UIPickerView指定列的列表項所使用的UIView控制項。 
 
UIDatePicker控制項只是負責該控制項的通用行為,而該控制項包含多少列,各列包含多少個列表項則由UIPickerViewDataSource對象負責。開發者必須為UIPickerView設置
UIPickerViewDataSource對象,並實現如下兩個方法。 

Ø - numberOfComponentsInPickerView::該UIPickerView將通過該方法來判斷應該包含多少列。 
 
Ø - pickerView:numberOfRowsInComponent::該UIPickerView將通過該方法判斷指定列應該包含多少個列表項。 


如果程式需要控制UIPickerView中各列的寬度,以及各列中列表項的大小和外觀,或程式需要為UIPickerView的選中事件提供響應,都需要為UIPickerView設置UIPickerViewDelegate委托對象,並根據需要實現該委托對象中的如下方法。 
  
Ø - pickerView:rowHeightForComponent::該方法返回的CGFloat值將作為該UIPickerView控制項中指定列中列表項的高度。 

Ø - pickerView:widthForComponent::該方法返回的CGFloat值將作為該UIPickerView控制項中指定列的寬度。 

Ø - pickerView:titleForRow:forComponent::該方法返回的NSString值將作為該UIPickerView控制項中指定列的列表項的文本標題。 

Ø - pickerView:viewForRow:forComponent:reusingView::該方法返回的UIView控制項將直接作為該UIPickerView控制項中指定列的指定列表項。 

Ø - pickerView:didSelectRow:inComponent::當用戶單擊選中該UIPickerView控制項的指定列的指定列表項時將會激發該方法。 
  

二、UIPickerView的使用方法(先以單列選擇器為例):

1、遵守協議

2、創建pickerView

3、實現代理

//UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制項包含的列數
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
    return 1; // 返回1表明該控制項只包含1列
}

//UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制項指定列包含多少個列表項
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    // 由於該控制項只包含一列,因此無須理會列序號參數component
    // 該方法返回teams.count,表明teams包含多少個元素,該控制項就包含多少行
    return _teams.count;
}


// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為UIPickerView
// 中指定列和列表項的標題文本
- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    // 由於該控制項只包含一列,因此無須理會列序號參數component
    // 該方法根據row參數返回teams中的元素,row參數代表列表項的編號,
    // 因此該方法表示第幾個列表項,就使用teams中的第幾個元素
    
    return [_teams objectAtIndex:row];
}

// 當用戶選中UIPickerViewDataSource中指定列和列表項時激發該方法
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
    // 使用一個UIAlertView來顯示用戶選中的列表項
    UIAlertView* alert = [[UIAlertView alloc]
                          initWithTitle:@"提示"
                          message:[NSString stringWithFormat:@"你選中的球隊是:%@"
                                   , [ _teams objectAtIndex:row]]
                          delegate:nil
                          cancelButtonTitle:@"確定"
                          otherButtonTitles:nil];
    [alert show];
}

 

效果圖

下一篇 UIPickerView的使用(二)  是多列選擇器的使用。

最後一篇 UIPickerView的使用(三)  是相關聯的多列選擇器的使用。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 九宮格的樣子以及游戲想大家接觸過,想當年也是玩了好多九宮格游戲,其中最經典的就是1-9這九個數字填進格子,橫豎向、對角相加數值相等這個益智游戲了。今天,在一個qq群里有人問九宮格做法,我就突然想起乾前端這麼長時間還真的沒做過九宮格。今天就把我做好的實例發上來,共看客們批評教育。
  • 寫了一段時間的心情,今天開始寫第一篇算是跟技術有點沾邊的文章,將今天在公司對一個老項目改版中涉及的代碼粘貼出來,也算開個張。 由於以前主要是做後端開發,對前端代碼瞭解不多,加上有一段時間沒有實際動手寫代碼,思路雖然還在,但真正寫起來才發現不是那麼容易,所以記錄下來,有很好的紀念意義。 主要場景是解決
  • 【原】FMDB源碼閱讀(二) 本文轉載請註明出處 —— polobymulberry-博客園 1. 前言 上一篇只是簡單地過了一下FMDB一個簡單例子的基本流程,並沒有涉及到FMDB的所有方方面面,比如FMDB的executeUpdate:系列方法、資料庫的加解密等等。這次寫的就是對FMDataba...
  • 註意:向客戶端寫數據時最後需要加上\n,不然很久都不會得到服務端的返回。 上面為普通的socket服務端,最近項目採用apache mina框架建後臺的socket服務端,採用上面的asyncSocket一直連接不上伺服器,也在網上查詢了大量的資料,最終發現需要如下: NSString *reque
  • 前兩篇文章 UIPickerView的使用(一) 、 UIPickerView的使用(二),學習了UIPickerView的單列選擇器和雙列選擇器的使用。 現在我們一起學習相互依賴的多列選擇器 1、遵守協議 2、創建pickView 3、實現協議 //UIPickerViewDataSource中定
  • 上篇文章 UIPickerView的使用(一) 學習瞭如何創建單列選擇器,現在看一下如何創建多列選擇器 多列選擇器(以二列為例) 1、遵守協議和創建兩個數據源 2、創建pickView 3、實現代理 //UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制項包含的列數 -
  • 標題欄和狀態欄 Android程式預設情況下是包含狀態欄和標題欄的。 在Eclipse中新建一個Android程式,運行後顯示如下: 圖中標出了狀態欄(顯示時間、電池電量、網路等)和標題欄(顯示應用的名稱,即activity的android:label的屬性值)。 要隱藏標題欄和狀態欄,總體來說有兩
  • 1、首先先創建四個動畫文件 ①:left_in.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...