2013-05-19 52 views
0

我有一個UIPickerView,這是一個在UIPickerView中添加新記錄的綠色按鈕。我可以添加一條新記錄,但它不會出現,因爲我無法更改組件中的行數。如何在UIPickerView中添加一行

如何在UIPickerView中添加一條記錄和一行?

謝謝!

我UIPickerview:

https://docs.google.com/file/d/0B26lA9znN3CUSTdvX21kUF92MzA/edit?usp=sharing

編輯:當我點擊綠色按鈕,它會顯示一個UIAlertView中的TextInput,我在我的NSMutableArray添加一個新值,所以記錄的數量變化。所以當一個ReloadAllComponents他沒有在UIPickerView中添加額外的一行時,因爲我已經在numberOfRowsInComponent方法中設置了一個金額。

+0

請將您的代碼發佈到您的選取器視圖的數據源和委託中。 –

回答

0

假設你爲你的pickerview記錄管理一個NSMutableArray。在這種情況下,你需要管理3種方法來實現這一目標:

1.您的綠色按鈕時的處理方式

-(IBAction) greenbuttonPressed:(id)sender{ 
    // add new record to your NSMutableArray (mypickerviewrowsarray) 

    [self.myPickerView reloadAllComponents]; 

} 

2. pickeview的數據源的方法,numberOfRowsInComponent

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [self.mypickerviewrowsarray count]; 
} 

3. pickerview的委託方法,titleForRow

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [self.mypickerviewrowsarray objectAtIndex:row]; 
} 

要做到這一點,請確保你設置了你的pickerview的委託,同時你設置你的viewcontroller來實現UIPickerViewDelegate和UIPickerViewDataSource。

希望你能用這個!

+0

當我點擊綠色按鈕時,它會顯示一個UIAlertView TextInput,我在NSMutableArray中添加一個新值,所以記錄數量會發生變化。所以當一個ReloadAllComponents他沒有在UIPickerView中添加額外的一行時,因爲我已經在numberOfRowsInComponent方法中設置了一個金額。 –

+0

如果我理解的很好,這意味着在alertview關閉後重新加載應該會發生。所以reloadAllComponents應該是dismissWithClickedButtonIndex,AlertView的按鈕處理程序的最後一行。你試過這個嗎? reloadAllComponents觸發numberOfRowsInComponent也應該返回一個遞增的值。 – nzs

+0

真的reloadAllComponents重新加載UIPickerView的所有方法,因此我看到錯誤不在這些方法中。我在ViewDidLoad方法中查詢數據庫並將這些查詢傳遞給MSMutableArray。在方法numberOfRowsInComponent中,我正在返回記錄數。我通過在numberOfRowsInComponent方法中進行查詢來解決問題,因此該值將始終更新。總之,我沒有再次執行查詢,所以數字沒有改變。請原諒我英語不好,謝謝你的幫助。 –