天天看點

iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用

一、實作效果

說明:點選随機按鈕,能夠自動選取,下方資料自動重新整理。

iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用

二、實作思路

1.picker view的有預設高度為162,不可修改。

2.顯示資料,需要設定資料源,也有兩種方式(成為資料源,遵守協定)

3.實作資料源裡面的兩個方法

1)傳回一共有多少列

2)在這一列中一共有多少行

4.通過代理告訴它那一列的哪一行顯示哪些資料(設定其代理為控制器)

5.使用懶加載,加載所有的食物

6.完成基本資料的展示(列,行,内容)

7.自動更新選中的食物資訊。(使用一個大的view,上面放6個label)

1)給3個lab指派,添加三個屬性(水果,主菜,飲料)

2)監聽選中了哪一行(監聽有兩種思想,一個是代理,一個是通知),先檢視有沒有代理的方法(didselectrow)這個方法當選中了某一行的的時候調用,會将選中的列号和行号當做參數傳入進去。能夠擷取到對應的列号和行号。

3)完成選中時調用的監聽方法

4)在viewdidload裡面設定預設選中的内容,設定為[0][1]

5)提高可擴充性(手動的調用那幾行-使用一個for循環)

8.随機功能的實作

1)怎麼讓代碼選中某一行(selectrow),調用該方法可以指定讓它滾動到那一列的哪一行

2)實作頭部的功能(使用一個大的uiview,裡面放兩個子控件)

3)設定高度44,怎麼讓随機按鈕的位置居中?可以設定它的高度為44,最大的y值為64。

4)設定随機按鈕的點選事件randomfood,讓pickerview主動選中某一行。

5)生成随機數的方法(生成随機數的限制,不超過目前的總數)

6)缺點,将來資料改變之後,會報錯(模于幾)[self.foods[0] count]?為什麼不用簡寫 點文法?(切記要記住)

7)随機數的處理不嚴謹,有的時候生成的随機數可能是相等的,那麼這樣的話列就不會滾動,擷取到對應列的資料總數,如何拿到上一次産生的随機值(也就是目前選中的行),比較上一次的行号和目前生成的随機數是否相同,如果相同則重寫生成

9.解決另外一個問題,下面的資料随機重新整理失效了,通過代碼選中某一行。

三、實作代碼示例

1.項目文檔結構和storyboard檔案

iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用

storyboard檔案大的界面設定:

iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用

2.代碼示例

主要制器檔案代碼:

iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用
iOS開發UI篇—使用picker View控件完成一個簡單的選餐應用

四、重要補充

請注意在代碼實作中為什麼使用 [self.foods[0] count]; 而不是直接使用點文法self.foods[0].count取值。   

[self.foods objectatindex:0]; == self.foods[0];//這兩句的效果等價,而self調用objectatindex:0這個方法,傳回的是一個id類型的萬能指針,它的真實類型要到實際運作的時候才能檢測得到,是以不能直接使用self.foods[0].count。

繼續閱讀