iOS处理UIBarButtonItem解除Segue的方式

时间:2012-10-23 12:55:42

标签: iphone objective-c ios storyboard

在iOS 6中,您有Unwinding Segue返回上一个视图控制器。

我正在使用故事板,来计算那件事。而且我在iOS 5上,我没有放卷塞格。

图片解释了情况: enter image description here

在第三个窗口(我认为它的官方称为故事)中有一个完成按钮。

如何使该按钮返回屏幕上带有文本的对象并返回到窗口2? 在那里,窗口2表格应该反驳,但这不属于这个问题的范围。

我所做的是在ThirdWindowViewController中实现IBOutlet(让我们称之为),它与IBAction方法相关联。

@property (nonatomic, strong) IBOutlet UITextView* textView;

@property (nonatomic, strong) Note* note;

@property (nonatomic, retain) IBOutlet UIBarButtonItem* doneButton;

- (void) configureView;
- (IBAction) doneAction:(id)sender;
- (BOOL) prepareNoteForTransition;

EDIT_01

汤姆写道,你需要一个代表。这就是我实际做到的方式,我用上面提到的方法。我只是认为还有一些特定于苹果的方法,比如Segues。或者一些替代方案。

谢谢你们。

3 个答案:

答案 0 :(得分:2)

我也不确定是否理解了您的问题,但如果您想要完成“完成”按钮的操作,请回写[self.navigationController popViewControllerAnimated:YES];

答案 1 :(得分:2)

您希望在“故事”视图控制器中为呈现视图控制器设置委托属性:

NotesViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showStoryViewController"]) {
        [segue.destinationViewController setDelegate:self];
    }
}

- (void)storyViewControllerDidPressDoneWithText:(NSString *)text note:(Note *)note
{
    self.note = [NSString stringWithString:note];
    [self dismissViewControllerAnimated:YES completion:NULL];
}

Story.m

- (IBAction)doneAction:(id)sender
{
    [self.delegate storyViewControllerDidPressDoneWithNote:self.textView.text note:self.note];
}

还要确保#import "NotesViewController.h"

中的Story.h

答案 2 :(得分:0)

我不确定我是否理解它,但您可以从Done按钮到第二个视图控制器绘制一个segue并实现prepareForSegue:。这样,您就可以将上一个视图控制器中的任何信息发送到目标控制器。