我試着做了這種方式:撥打reloadAllComponents:
按鈕被點擊時,但它不叫rowHeightForComponent:
如何通過按鈕點擊更改UIPickerView中的行大小?
回答
從文檔,它看起來像reloadAllComponents:
只是呼籲組件內的新數據的委託,但想必不會要求大小。
相反,我會嘗試在每個組件上調用rowSizeForComponent:
。在這個方法的文檔中,它說:「返回:給定組件中行的大小,這通常是顯示用作組件中一行的最大字符串或視圖所需的大小,選擇器視圖獲取這個屬性通過調用pickerView:widthForComponent:和pickerView:rowHeightForComponent:delegate方法並對其進行緩存,默認值爲(0,0)。「
然後,在你的UIPickerViewDelegate中,我會實現pickerView:widthForComponent:
和pickerView:rowHeightForComponent:
。
我的意思是我需要改變行的大小,然後點擊與PickerView相同視圖的按鈕。 – eXhausted 2012-04-26 11:39:25
那麼,你可以通過點擊按鈕時觸發一個方法來實現這一點,並且在該方法內部調用每個組件的rowSizeForComponent?假設你有一組組件可以通過... – 2012-04-26 19:39:01
您可能需要釋放UIpickerview然後再創建一個與pickerView適當的返回值:rowHeightForComponent:
這似乎是一個痛苦,但我想不出另一種解決方案副手的。
不幸的是,調用rowSizeForComponent不會有幫助,因爲正如文檔所說,「選擇器視圖通過調用pickerView:widthForComponent:和pickerView:rowHeightForComponent:委託方法和緩存來獲取此屬性的值它。」因此,調用rowSizeForComponent只會提供緩存的值,而不是調用pickerView:rowHeightForComponent:來獲取新值。
你不需要釋放pickerView來設置新的單元高度,如@auspicious99
建議。 相反設置委託或數據源每次觸發這樣reloadAllComponents:
pickerView.delegate = self; //or pickerView.dataSource = self;
[pickerView reloadAllComponents];
這真的很奇怪爲什麼reloadAllComponents方法不會觸發rowHeightForComponent方法,但是這看起來象是用上述伎倆一個有效的解決方法。
希望它有幫助。
- 1. 如何通過鼠標點擊按鈕來改變applet的大小(寬x高)?
- 2. 如何通過按鈕的點擊事件更改方向?
- 3. 點擊按鈕後如何創建UIPickerView?
- 4. 如何通過一行按鈕更新一行點擊
- 5. 如何通過另一個按鈕的onClick更改按鈕的大小?
- 6. 通過點擊按鈕更改按鈕圖像IOS7
- 7. 如何通過點擊按鈕來更改網格顏色?
- 8. 更改UIPickerView的列大小
- 9. 如何更改點擊按鈕的值?
- 10. 如何更改按鈕的大小
- 11. 如何更改xcode的按鈕大小?
- 12. 如何通過點擊另一個按鈕java執行按鈕?
- 13. 通過按鈕點擊更改div中的內容
- 14. 通過ActionBar按鈕點擊更改FragmentPagerAdapter中的片段內容
- 15. 更改大小的按鈕
- 16. 如何在點擊按鈕後通過服務執行小部件更新?
- 17. 如何通過單擊按鈕來更改ImageView中的圖片?
- 18. 如何更改點擊按鈕圖標?
- 19. 如何更改點擊按鈕標籤?
- 20. 如何更改點擊按鈕圖像?
- 21. 如何更改顏色點擊按鈕?
- 22. 如何更改按鈕圖像點擊
- 23. 如何更改按鈕大小extjs
- 24. 如何通過點擊一個按鈕
- 25. 如何通過點擊一個按鈕
- 26. 如何通過編碼點擊按鈕?
- 27. 如何通過點擊一個按鈕
- 28. 如何訪問,通過點擊按鈕
- 29. 如何通過點擊按鈕
- 30. 如何通過點擊按鈕
一種方法是在按鈕選擇redifine委託和數據源 'self.pickerView.delegate =自我;'' = self.pickerView.dataSource自我;' ,但我不知道是不是正常的:) – eXhausted 2012-04-26 10:12:23