在一个UINavigationController的在每个导航项目设置按钮

问题描述:

我知道这是可能使用这一个导航项目添加自定义按钮:在一个UINavigationController的在每个导航项目设置按钮

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self 
       action:@selector(showInfo:) 
    forControlEvents:UIControlEventTouchUpInside]; 

// Add the info button to the navigation bar 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
[self.navigationItem setRightBarButtonItem:barButtonItem 
            animated:YES]; 
[barButtonItem release]; 

但有推入每个子视图设置该按钮的方式导航堆栈,而不必复制此代码?

谢谢!

你也可以继承的UIViewController,然后覆盖:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
     [infoButton addTarget:self action:@selector(showInfo:) forControlEvents:UIControlEventTouchUpInside]; 

     // Add the info button to the navigation bar 
     UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
     [self.navigationItem setRightBarButtonItem:barButtonItem animated:YES]; 

     [barButtonItem release]; 
    } 
    return self; 
} 

那么当哟你做一个新的风险投资,这个类的子类而不是UIViewController

当按下“下一个”视图控制器,你可以添加以下代码:

nextVC.navigationItem.rightBarButtonItem = [self.navigationItem.rightBarButtonItem copy]; 

但是你必须覆盖选择(如果你想你的按钮将数据发送到您的nextViewController对象):

[nextVC.navigationItem.rightBarButtonItem setTarget:nextVC ...];