2013-06-28 7 views
0

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

[[[[[self tabBarController] viewControllers] objectAtIndex:2] tabBarItem] setEnabled:FALSE];

Но изображение становится инвалидом. Я хочу, чтобы изображение было включено. Как это возможно, без использования пользовательского изображения через код. Я не хочу использовать пользовательский образ кнопок панели вкладок. Я хочу использовать выбранные по умолчанию и не выбранные кнопки кнопок панели вкладок. Пожалуйста, предложите.

Заранее спасибо.

+0

Возможно, вы можете установить булевы, чтобы узнать, какие вкладки включены. А в делегате 'tabBar: didSelectItem:' проверять эти булевы. Если логическое значение, соответствующее выбранной вкладке, означает, что это не разрешено, просто выполните «return;», чтобы выйти из делегата. – zbMax

+0

@zbMax - но изображение меняется на не выбранное изображение. Я хочу выбранное изображение, даже если кнопка вкладок не включена ... – NiKKi

ответ

0

Вы можете попробовать следующее: переключить UIBarButtonItem на отключенное, вместо переключения свойства, изменить tintColor свойство на чистый цвет. Это предотвратит тонирование кнопки при нажатии. Затем, в делегате, проверьте, отключена ли кнопка и если она возвращается:

// inside view controller .m 

-(void)disableButton 
{ 
    [barBtn setTintColor:[UIColor clearColor]]; 
} 

-(void)enableButton 
{ 
    [barBtn setTintColor:[UIColor grayColor]]; // whatever color the tint should be 
} 

-(void)buttonTapped:(id)sender 
{ 
    if ([barBtn tintColor] == [UIColor clearColor]) 
    { 
     return; // button is disabled, so don't to action 
    } 
} 
+0

Я хотел создать категорию для этого ?? – NiKKi

+0

@NiKKi No; предположительно, где-то в вашем контроллере просмотра есть что-то, что заставляет кнопку включать/отключать. Это вызывает функции 'enableButton' /' disableButton'. 'buttonTapped:' - это обратный вызов для нажатия кнопки фактической панели вкладок. 'barBtn' - это' UIBarButtonItem', который является фактической кнопкой панели вкладок. Я немного изменил код, чтобы быть более ясным – Turch

+0

@NiKKi также, 'barBtn' уже имеет свойство' tintColor'. – Turch