Iphone 在UINavigationController的每个导航项中设置按钮
我知道可以使用以下方法在导航项中添加自定义按钮:Iphone 在UINavigationController的每个导航项中设置按钮,iphone,ios4,uinavigationcontroller,uibarbuttonitem,uinavigationitem,Iphone,Ios4,Uinavigationcontroller,Uibarbuttonitem,Uinavigationitem,我知道可以使用以下方法在导航项中添加自定义按钮: UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; [infoButton addTarget:self action:@selector(showInfo:) forControlEvents:UIControlEventTouchUpInside]; // Add the info button to the
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];
但是,有没有一种方法可以在推送到导航堆栈的每个子视图中设置此按钮,而不必复制此代码
谢谢 按下“下一个”视图控制器时,可以添加以下代码:
nextVC.navigationItem.rightBarButtonItem = [self.navigationItem.rightBarButtonItem copy];
但是,您必须覆盖选择器(如果您希望按钮将数据发送到nextViewController对象):
按下“下一个”视图控制器时,可以添加以下代码:
nextVC.navigationItem.rightBarButtonItem = [self.navigationItem.rightBarButtonItem copy];
但是,您必须覆盖选择器(如果您希望按钮将数据发送到nextViewController对象):
您还可以将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;
}
然后,当您创建一个新VC时,可以将该类子类化,而不是将UIViewController子类化,也可以将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;
}
然后,当您创建一个新VC时,将该类作为子类,而不是UIViewController