2011-09-02 40 views

回答

0

您應該執行UIPickerViewDelegate ProtocolUIPickerViewDataSource Protocol

在方法- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component只是返回需要的標題。

您還可以在valueChanged事件UIPickerView上添加委託人。每當您的值發生變化時,您都可以重新加載所有可見的行並將標籤mins和secs設置在正確的位置。

您可以在黑線上添加2 UILabel s的子視圖。

您可以添加帶有標籤minssecs的黑色漸變線的子視圖。

然後使用方法:- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component您可以設置適當的列寬。

+0

這是行不通的....我想添加'mins'只在選定的行... – DShah

+0

更新了我的答案。試試看。 – Nekto

+0

我有想過添加UILabels,因爲我們在UITableView中創建單元格...但在這種情況下如何實現我沒有得到.. – DShah

4

首先,您使用pickerView:viewForRow:inComponent:reusingView:數據源方法返回「00」標籤。這實際上有點棘手,因爲pickerview會改變這個視圖的框架來填充行。這意味着您必須將正確定位的視圖嵌入到另一個視圖中,然後返回該容器視圖。

至於標籤,那些簡單的UILabel對象已被正確定位並添加爲pickerview本身的子視圖。

爲了讓它們正確更新,只需在pickerView:didSelectRow:inComponent:方法中更改它們的標題即可。

這正是UIDatePicker正在做的事情。

+0

你能否請給這兩個方法遵循的步驟..其實我試圖在didSelectRow更改名稱..但沒有成功.. – DShah

+1

@DShah我給了我的答案中的步驟... –

+0

在'pickerView:viewForRow:inComponent:reusingView:'方法中添加一個UILabel也會產生同樣的問題,即它會在所有值上創建標籤,而不是選定的行。 – DShah

相關問題