UIPickerView的使用(二)

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

上篇文章 UIPickerView的使用(一) 學習瞭如何創建單列選擇器,現在看一下如何創建多列選擇器 多列選擇器(以二列為例) 1、遵守協議和創建兩個數據源 2、創建pickView 3、實現代理 //UIPickerViewDataSource中定義的方法,該方法的返回值決定該控制項包含的列數 -


 上篇文章 UIPickerView的使用(一) 學習瞭如何創建單列選擇器,現在看一下如何創建多列選擇器

 多列選擇器(以二列為例)

 1、遵守協議和創建兩個數據源

2、創建pickView

 

3、實現代理

 

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

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


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


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

// UIPickerViewDelegate中定義的方法,該方法返回的NSString將作為
// UIPickerView中指定列的寬度
-(CGFloat)pickerView:(UIPickerView *)pickerView
   widthForComponent:(NSInteger)component
{
    // 如果是第一列,寬度為90
    if(component == 0) {
        return 90;
    }
    return 210; // 如果是其他列(只有第二列),寬度為210
}

 

效果圖

 

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


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

-Advertisement-
Play Games
更多相關文章
  • 在數據添加到DOM時候,我們可以需要對內容進行HtmlEncode或JavaScriptEncode,以預防XSS攻擊。 JavaScriptEncode 使用“\”對特殊字元進行轉義,除數字字母之外,小於127的字元編碼使用16進位“\xHH”的方式進行編碼,大於用unicode(非常嚴格模式)。
  • magic Toolbox是一款處理圖像的javascript插件,這款插件號稱用戶僅需五分鐘便可讓網站擁有酷炫的效果。我個人認為在用戶體驗方面做得相當不錯,最讓我滿意的是支持PC端及跨移動設備的用戶體驗。magicToolBox主要有六大功能,分別為:Magic Zoom、Magic Zoom P
  • firefox不支持background-position-x background-position-y,使用background-position:5px 5px;
  • 九宮格的樣子以及游戲想大家接觸過,想當年也是玩了好多九宮格游戲,其中最經典的就是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中定
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...