Если вы действительно хотите добавить UIBarButtonItem (не UIButton) на панель инструментов, вы просто создаете один или несколько UIBarButtonItem, помещаете их в NSArray (или NSMutableArray) и назначаете этот массив свойству items
объекта панель инструментов. См. документацию UIBarButtonItem для подробностей. Используя ваш код выше, это может выглядеть примерно так:
NSMutableArray *items = [NSMutableArray array];
for (int i = 0; i < [arrayOfModulesScreens count]; i++) {
NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:[dictRow objectForKey:@"screen_title"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(buttonClick:)];
[items addObject:button];
[button release];
}
screensBar.items = items;
(тогда вам, конечно, потребуется изменить buttonClick:
, чтобы он ожидал UIBarButtonItem вместо UIButton).
Если вы действительно хотите поместить туда UIButton, вам сначала нужно обернуть UIButton в UIBarButtonItem, что-то вроде этого:
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
Затем добавьте элемент на панель инструментов, как указано выше.
Что касается того, почему ваши кнопки не отображаются в опубликованном коде, проблема в том, что buttonWithType:
UIButton создает кнопку с нулевой шириной и нулевой высотой. Вам нужно изменить размер кнопки (вручную или с помощью sizeToFit
после установки заголовка), чтобы она отображалась. После исправления вы увидите, что все кнопки расположены друг над другом в верхнем левом углу родительского представления; вам необходимо расположить их вручную, в зависимости от ситуации.