2013-05-23 2 views
0

Как я могу управлять количеством нескольких UITableView во время сборки, используя один номер #define?Как создать массив свойств UITableView @ во время сборки

Мое приложение в настоящее время нуждается в 4 UITableView. Позже число будет увеличиваться, поэтому я хочу контролировать это во время сборки с помощью одного #define из числа.

Но я получаю сообщение об ошибке при использовании массива в объявлении @property:

#define TOTAL_TX_CHANNELS 4 

@interface blah() <UITableViewDataSource, UITableViewDelegate CBPeripheralDelegate> 
{ 
} 

@property (strong, nonatomic) UITableView* channel_tableView[ TOTAL_TX_CHANNELS ] ; 

Что трюк? Должен ли я использовать NSArray или что-то еще?

+1

Зачем вам четыре вида стола, если вы не возражаете, чтобы я спросил? – Eimantas

+1

Какая ошибка? – rmaddy

+0

Это приложение покажет карту состояния системы локальной сети нескольких устройств iOS и встроенных компьютеров.В четырех таблицах TABLEVIEW будет показано 4 столбца, в каждом столбце будут отображаться все компьютеры на канале связи - 4 канала связи, которые будут увеличиваться в будущем по мере развития продукта. –

ответ

0

Решение было не использовать массив свойств, но использовать массив UITextView в рамках реализации, то .m ...

UITextView * channel_pipe_textview [TOTAL_TX_CHANNELS];

Затем, в функции viewDidLayoutSubviews Я создал UITableView для каждого канала и добавил стандартные функции для инициализации ячеек, следуя превосходному руководству Apple по программированию UITableView.

Он работал отлично, полностью не зависит от раскадровки: я получаю четыре вертикальных бок-о-боковых столбца, отображающих любые изображения и текстовые данные относительно каждого устройства на канале, с возможностью прокрутки, что позволяет любое количество устройств на канал.

Руководство по программированию Apple UITableView также содержит учебник и пример кода для программной генерации UITableViews исключительно во время выполнения.

+0

Я только что продемонстрировал приложение своему клиенту, основанное на этом решении, и ангел и главный исполнительный директор понравились ему. UITableViews позволили мне легко заполнить экран повторяющимися шаблонами, представляющими системные компоненты, которые они понимали AT-A-GLANCE (мои намерения), и они так волнуются, что начали мозговой штурм, я взял много заметок, и мне сказали приступить к проекту , (Я люблю программное обеспечение.) –

0

Да, используйте NSArray.

Если он настроен в Interface Builder вы можете использовать:

@property (weak, nonatomic) IBOutletCollection (UITableView) NSArray * tableViews;  
0

Почему именно вам нужно контролировать # из UITableViews? Если вы должны это сделать, вы можете выполнить некоторую математическую операцию.

int adder = 4; 
int currentNumberOfTvs = 4; 

//Do some logic, that will add the number of current table views 

if (...) //Test if user has added, or however, if another table view was added, 
{ 
adder++;//now adder = 5. So you have a current count of how many table views there are 
} 

Надежда, что помогает :)

+0

Необходимо управлять номером, потому что число может меняться в зависимости от требований продукта и использования клиента. –

0

Я согласен с другими, что это ужасная реализация. Ответ Уэна очень хорош.

Однако, все еще можно реализовать это таким образом, просто убедитесь, что объявить свойство, как

@property (assign, nonatomic) UITableView** channel_tableView; 

Подсчет ссылок работает только на объектах Obj-C, но вы создаете массив C здесь.

Обратите внимание, что для распределения хранилища необходимо использовать malloc.

Если вы не хотите malloc, реализовать его как Ивар:

@interface Blah { 
    UITableView* channel_tableView[4]; 
} 
@end 
Смежные вопросы