2015-02-21 2 views
0

Я создаю категорию для UINavigationController class.when я реализовать метод я couldnot увидеть любые элементы управления на навигации controller.i пытались ..UINavigation bar все классы?

.h файл

импорт
@interface UINavigationController (UINavigationControllFile)<UISearchBarDelegate> 
-(void)setBarForCard; 
@end 

.m файл

#import "UINavigationController+UINavigationControllFile.h" 

@implementation UINavigationController (UINavigationControllFile) 
-(void)setBarForCard 
{ 
    [self addNatigationItemsControls]; 
} 
-(void)addNatigationItemsControls 
{ 
    UIBarButtonItem *slideNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Slide" 
                     style:UIBarButtonItemStylePlain target:self action:@selector(slideAction)]; 
    UIBarButtonItem *homeNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Home" 
                     style:UIBarButtonItemStylePlain target:self action:@selector(homeAction)]; 
    UIBarButtonItem *categoryNavigation = [[UIBarButtonItem alloc]initWithTitle:@"category" 
                      style:UIBarButtonItemStylePlain target:self action:@selector(categoryAction)]; 
    UIBarButtonItem *searchNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Search" 
                     style:UIBarButtonItemStylePlain target:self action:@selector(searchAction)]; 

    UIBarButtonItem *orderHistory = [[UIBarButtonItem alloc]initWithTitle:@"History" style:UIBarButtonItemStylePlain target:self action:@selector(orderhistoryAction)]; 
    UIBarButtonItem *checkOut = [[UIBarButtonItem alloc] initWithTitle:@"CheckOut" style:UIBarButtonItemStylePlain target:self action:@selector(checkOutAction)]; 

    NSArray *arrBarBtns = [[NSArray alloc]initWithObjects:slideNavigation,homeNavigation,categoryNavigation,searchNavigation, nil]; 

    NSArray *arrRBtns = [[NSArray alloc]initWithObjects:orderHistory,checkOut, nil]; 
    self.navigationItem.rightBarButtonItems = arrRBtns; 
    self.navigationItem.leftBarButtonItems = arrBarBtns; 

} 
-(void)homeAction 
{ 

} 

-(void)categoryAction 
{ 

} 

-(void)searchAction 
{ 
    UISearchBar *searchBar = [[UISearchBar alloc]init]; 
    searchBar.delegate=self; 
    searchBar.frame = CGRectMake(0, 2,600, 24); 
    [searchBar setTintColor:[UIColor blueColor]]; 
    searchBar.showsCancelButton = YES; 
    UIView *barWrapper = [[UIView alloc]initWithFrame:CGRectMake(0, 0, searchBar.frame.size.width,24)]; 
    [barWrapper addSubview:searchBar]; 
    self.navigationItem.titleView = barWrapper; 

} 
-(void)orderhistoryAction 
{ 
    // OrdersViewController *ordersViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OrdersViewController"]; 
    // [self.navigationController pushViewController:ordersViewController animated:YES]; 
} 

-(void)checkOutAction 
{ 

} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
{ 
    NSLog(@"begin editing"); 

} 

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    NSLog(@"Text change "); 

} 



- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    NSLog(@"Cancel clicked"); 
    self.navigationItem.titleView =nil; 
    self.navigationItem.leftBarButtonItems=nil; 
    self.navigationItem.rightBarButtonItems=nil; 
    // [self addNatigationItemsControls]; 
} 

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
    NSLog(@"Search Clicked %@",searchBar.text); 
    NSString *temp=[NSString stringWithFormat:@"search=%@",searchBar.text]; 
    NSLog(@"%@ ",temp); 

} 
-(void)slideAction 
{ 


} 

@end 

и я реализован в другом классе, но ничего не показываю.

[self.navigationController setBarForCard]; 

скажите мне предложение или дайте мне ссылку?

Это правильный способ?

Он должен появиться для всех контроллеров.

ответ

2

просто создать категорию для UIViewController

@interface UIViewController (UINavigationControllFile) 
-(void) setBarForCard; 



@implementation UIViewController (UINavigationControllFile) 

-(void)setBarForCard 
{ 
[self addNatigationItemsControls]; 
} 
-(void)addNatigationItemsControls 
{ 
UIBarButtonItem *slideNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Slide" 
                    style:UIBarButtonItemStylePlain target:self action:@selector(slideAction)]; 
UIBarButtonItem *homeNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Home" 
                    style:UIBarButtonItemStylePlain target:self action:@selector(homeAction)]; 
UIBarButtonItem *categoryNavigation = [[UIBarButtonItem alloc]initWithTitle:@"category" 
                     style:UIBarButtonItemStylePlain target:self action:@selector(categoryAction)]; 
UIBarButtonItem *searchNavigation = [[UIBarButtonItem alloc]initWithTitle:@"Search" 
                    style:UIBarButtonItemStylePlain target:self action:@selector(searchAction)]; 

UIBarButtonItem *orderHistory = [[UIBarButtonItem alloc]initWithTitle:@"History" style:UIBarButtonItemStylePlain target:self action:@selector(orderhistoryAction)]; 
UIBarButtonItem *checkOut = [[UIBarButtonItem alloc] initWithTitle:@"CheckOut" style:UIBarButtonItemStylePlain target:self action:@selector(checkOutAction)]; 

NSArray *arrBarBtns = [[NSArray alloc]initWithObjects:slideNavigation,homeNavigation,categoryNavigation,searchNavigation, nil]; 

NSArray *arrRBtns = [[NSArray alloc]initWithObjects:orderHistory,checkOut, nil]; 
self.navigationItem.rightBarButtonItems = arrRBtns; 
self.navigationItem.leftBarButtonItems = arrBarBtns; 

}

, а затем вызвать его с [само setBarForCard]; от вашего ViewControllers ..

+0

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

+0

показать фрагмент кода ур для слайдов. – Jitendra

+0

Это была моя ошибка теперь работаю спасибо большое – karthikeyan

Смежные вопросы