只需在带有条形按钮项的新视图上放置一个导航栏。通过控制从条形按钮项拖动到视图控制器的 .h 来为条形按钮项创建一个操作。然后,您可以使用委托和协议方法告诉第一个控制器何时按下按钮并让它使用[self dismissModalViewControllerAnimated:YES];
因此,在您的第二个视图中,创建一个包含已完成方法的协议,如下所示:
@protocol SecondViewControllerDelegate <NSObject>
-(void) done;
@end
@interface SecondViewController : UIViewController {
...
id delegate;
}
...
@property (nonatomic, assign) id<SecondViewControllerDelegate> delegate;
-(IBAction)done:(id)sender; //this will be linked to your nav bar button.
@end
然后在您的按钮操作中调用:
-(IBAction)done:(id)sender{
[self.delegate done];
}
您的第一个视图控制器需要实现协议<SecondViewControllerDelegate>
然后在您的第一个视图控制器中,将其设置为您的第二个视图控制器的委托,然后再进行切换。
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"Second View Modal Segue Identifier"])
{
SecondViewController *viewController = segue.destinationViewController;
viewController.delegate = self;
}
}
最后,在您的第一个视图控制器中捕获委托的完成调用:
-(void) done
{
[self dismissModalViewControllerAnimated:YES];
}
我就是这样做的。如果您在协议和委托方面没有很多经验,一开始可能会感到困惑,但对我来说效果很好。