使用自定义UIBarButton执行推送segue

时间:2012-05-02 01:13:11

标签: iphone ios xcode uibarbuttonitem segue

我有这段代码可以让我创建一个自定义的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,简单就是这样。在我的情况下,它是完全不同的。

建议请:)

2 个答案:

答案 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];
}

希望,这可能有所帮助。