我正在嘗試調整基於視圖的NSTableView中的所有NSTextField。我想在所有文本字段上調用[myTextfield sizeToFit]。我的問題是如何迭代我的tableview中的所有視圖。我試過enumerateAvailableRowViewsUsingBlock:但它不起作用。我能做些什麼來解決這個問題?遍歷NSTableView中的視圖
回答
您可以通過int numberOfRows = [yourTableView numberOfRows]
獲得總行數。然後使用它遍歷它們並調用你的方法。 (假設你在IB中給你的NSTextField一個獨特的標籤以區別於你的NSTableCellView的其他子視圖)。
for (int i = 0; i < numberOfRows; i++) {
NSTableCellView *someTableCellView = [[yourTableView viewAtColumn:(NSInteger) row:i makeIfNecessary:FALSE];
NSTextField *yourTextField = [someTableCellView viewWithTag:(NSInteger)];
}
另一個地方做它在NSTalbeView委託方法tableView:viewForTableColumn:row:
被調用每次你對你的tableView致電reloadData
。
試試這個。在IB中,將文本字段的標記設置爲任何你想要的(在這個例子中我使用1)。您可以通過致電viewAtColumn:row:makeIfNecessary:
訪問各行的NSTableCellView
。確保makeIfNecessary:
設置爲YES
。
代碼:
int x;
for (x = 0; x < [tableView numberOfRows]; x++) {
NSTableCellView *cellView = [tableView viewAtColumn:0 row:x makeIfNecessary:YES];
NSTextField *tField = [cellView viewWithTag:1];
[tField sizeToFit];
}
這爲我工作,所以如果它不爲你,我會感到很驚訝。如果有人可以提供一些見解,爲什麼makeIfNecessary:
必須是YES
來訪問應該已經創建的行視圖,我將不勝感激。
同上你的問題makeIfNecessary:,sud0。測試我的應用程序,如果將其設置爲NO,則該方法在10次測試運行中的5次中返回nil。但是,如果將其設置爲YES,則 –
將繼續,如果將其設置爲YES,則會在25/25次測試中返回預期的視圖。 –
- 1. 遍歷視圖組
- 2. 引導樹視圖遍歷
- 3. tkinter ttk遍歷樹視圖
- 4. Laravel遍歷視圖中的集合
- 5. 如何遍歷視圖中的kendo datasoure
- 6. 遍歷視圖中的會話變量
- 7. 如何遍歷Revit中的視圖?
- 8. 遍歷Boost多視圖視圖
- 9. Eclipse RCP和遍歷透視和視圖
- 10. 如何遍歷視圖的元素
- 11. Scala中的圖遍歷
- 12. 遍歷圖中的Freemarker
- 13. 圖的遍歷C
- 14. 遍歷Freebase圖
- 15. 遍歷圖像
- 16. 遍歷圖像
- 17. 圖遍歷
- 18. jQuery遍歷無序列表/樹視圖
- 19. Spring webflow:遍歷視圖狀態
- 20. 如何遍歷列表視圖列
- 21. 遍歷Android視圖的所有子視圖?
- 22. 遍歷樹遍歷
- 23. Excel中:試圖遍歷
- 24. 基於視圖的NSTableView + NSButton
- 25. 基於視圖的NSTableView
- 26. NSTableView內容視圖插圖
- 27. JavaScript圖遍歷庫
- 28. 打開圖遍歷
- 29. C#圖形遍歷
- 30. 圖遍歷問題
謝謝@bijan,但這種解決方案並不適合我。當我通過NSLog()打印視圖時,它指向null。 – dnlkng
哪一個引用null,NSTableCellView或NSTextField? – bijan
NSTableCellView(我的子類)。 – dnlkng