我有这段代码可以让我创建一个自定义的UIBarButton,它位于我的viewDidLoad中。
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:nil
action:nil];
self.navigationItem.rightBarButtonItem = doneButton;
现在,我希望在按下UIBarButton时调用下面的方法,以便完成对下一个视图控制器的segue。
- (void) didPressDone {
PointsResultsViewController *pointsResults = [self.storyboard instantiateViewControllerWithIdentifier:@"resultsPointsVC"];
[self.navigationController pushViewController:pointsResults animated:YES];
}
我对此做了一些研究。然而,我看到的都是关于从对象库将UIBarButton拖到ViewController然后将它连接到下一个VC,让方法prepareForSegue,done,简单就是这样。在我的情况下,它是完全不同的。
建议请:)
答案 0 :(得分:2)
您可以将目标设置为self,并将操作设置为didPressDone选择器:
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(didPressDone:)];
选择器应该有这样的签名:
- (void)didPressDone:(id)sender
答案 1 :(得分:0)
怎么样,这个 -
第1步:
在你的Viewcontroller.h文件中,只需像这样创建一个UIBarButton的IOBOutlet -
@property(nonatomic, strong) IBOutlet UIBarButton *doneButton;
和它的IBAction方法 -
-(IBAction)didPressDone:(id)sender;
第2步:
通过故事板连接UIBarButton,并附上action方法。
第3步:
现在让我们转到Viewcontroller.m文件,在-(void)viewDidLoad
方法中,按照你想要的方式初始化UIBarButton -
self.doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:nil
action:nil];
self.navigationItem.rightBarButtonItem = self.doneButton;
除了方法签名之外,“didPressDone”方法实现将是相同的 -
-(IBAction)didPressDone:(id)sender {
PointsResultsViewController *pointsResults = [self.storyboard instantiateViewControllerWithIdentifier:@"resultsPointsVC"];
[self.navigationController pushViewController:pointsResults animated:YES];
}
希望,这可能有所帮助。