用导航栏和后退button创build一个模态视图
我想创build一个模式视图与导航项目(正确的看法在我的屏幕截图),我想它有一个“后退button”。 我的应用程序是TabBar应用程序,我不希望这个视图有一个标签栏,但我想加载一个类似于“push”types的segue上一个视图(在我的屏幕截图上的左视图)。 我只能创buildpush segue来提供正确的导航回到左侧的视图,如果它被加载为模式视图,NavigationBar&TabBar不见了。 任何解决方法? 提前致谢!
只需将一个导航栏放在新视图上,并带有一个栏button项目。 通过控制从栏button项拖动到视图控制器的.h,为栏button项创build一个动作。 然后你可以使用一个委托和协议方法告诉第一个控制器什么时候该button被按下并且使用它[self dismissModalViewControllerAnimated:YES];
所以在你的第二个视图中用一个方法创build一个协议,就像这样:
@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
那么在你的动作中从你的button调用这个:
-(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]; }
我就是这样做的 如果你在协议和代表方面没有太多的经验,那么开始的时候可能会让人感到困惑,但是对我来说这个工作很好。
您需要将您的右侧视图控制器包裹在新的导航控制器中。 在IB中,select它并select菜单项Editor -> Embed In -> Navigation Controller
,IB将显示一个导航栏,您可以自定义您的心脏的内容。