Я пытаюсь изменить размер всех NSTextFields в NSTableView, основанный на просмотре. Я хочу называть [myTextfield sizeToFit] на всех текстовых полях. Мой вопрос заключается в том, как перебирать все представления в моем представлении таблицы. Я попробовал enumerateAvailableRowViewsUsingBlock: но он не работает. Что я могу сделать, чтобы решить эту проблему?Итерация над представлениями в NSTableView
ответ
Вы можете получить общее количество строк по int numberOfRows = [yourTableView numberOfRows]
. Затем используйте это, чтобы перебрать их и вызвать свой метод. (Предположим, что вы предоставили NSTextField уникальный тег в IB, чтобы отличить его от других подзонов вашего NSTableCellView).
for (int i = 0; i < numberOfRows; i++) {
NSTableCellView *someTableCellView = [[yourTableView viewAtColumn:(NSInteger) row:i makeIfNecessary:FALSE];
NSTextField *yourTextField = [someTableCellView viewWithTag:(NSInteger)];
}
Еще одно место, чтобы сделать это в методе tableView:viewForTableColumn:row:
делегата NSTalbeView, который вызывается каждый раз, когда вы звоните reloadData
на вашем Tableview.
Попробуйте это. В IB установите тег своего текстового поля в нужное вам положение (в этом примере я использую 1). Затем вы сможете получить доступ к NSTableCellView
для каждой строки, вызвав viewAtColumn:row:makeIfNecessary:
. Убедитесь, что 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. Тестирование моего приложения, если я установил его в НЕТ, метод вернул нуль в 5 из 10 тестовых прогонов. Но если я установил его в YES, –
продолжение, если я установил его в YES, он вернет представление, как ожидалось, в тестовых прогонах 25/25. –
- 1. Итерация над представлениями в Ruby on Rails
- 2. Итерация через ячейки на NSTableView
- 3. Как разместить NSButton над NSTableView
- 4. Как индексы работают над представлениями?
- 5. Параллельно итерация над BlockingQueue
- 6. Итерация над list_iterator дважды
- 7. F # итерация над словарем
- 8. Итерация над словарем
- 9. Итерация над строкой
- 10. Итерация над массивом Parse
- 11. Итерация над функциональными параметрами
- 12. Rubymonk - Итерация над хешей
- 13. Итерация над VendTransOpen
- 14. Итерация над CssStyleCollection
- 15. Итерация над Instagram json
- 16. Итерация над элементом DOM
- 17. Итерация над мультииндексным dataframe
- 18. Итерация над именами столбцов
- 19. Кукол - итерация над хэш
- 20. Итерация над словарями
- 21. Итерация над массивом JSON
- 22. Итерация над Guava Mutlimaps
- 23. Итерация над Sitecore Placeholder
- 24. Итерация над подмножеством набора
- 25. Итерация над вектором функций
- 26. Итерация над элементами набора
- 27. итерация над JSon объектом
- 28. Итерация над большим списком
- 29. Итерация над свойствами класса
- 30. Итерация над импульсом multi_index
Спасибо @bijan, но это решение не сработало для меня. Когда я печатаю представление через NSLog(), он ссылается на null. – dnlkng
Какой из них относится к null, NSTableCellView или NSTextField? – bijan
NSTableCellView (мой подкласс от него). – dnlkng