navigationBar 从视图2跳回视图1

一:从起始的控件做一条联线到目标场景。目标场景是navigationcontroller的话用model,否则用push。

二:将这个联线制定一个独特的Identifier。

三:为目标场景制作一个代理方法。

      //声明一个协议
@class DetailsViewController;

@protocol DetailsViewControllerDelegate <NSObject>  
- (void)DetailsViewControllerDidCancel:    //协议的方法
(DetailsViewController *)controller;  
- (void)DetailsViewControllerDidSave:  
(DetailsViewController *)controller;  
@end 


@interface DetailsViewController : UITableViewController
@property (nonatomic, weak) id <DetailsViewControllerDelegate> delegate;  //声明一个该协议的对象

- (IBAction)cancel:(id)sender;  
- (IBAction)done:(id)sender;  
@end

别忘了  @synthesize delegate; 


四:在Cancel和Done按钮,以及所有其他你需要和原始场景交流的地方调用代理方法。

- (IBAction)cancel:(id)sender
{
    [self.delegate DetailsViewControllerDidCancel:self];
}
- (IBAction)done:(id)sender
{
    [self.delegate DetailsViewControllerDidSave:self];
}


五:在原始场景执行代理方法,这将会在用户按下按钮后关闭场景。

@interface TableViewController : UITableViewController
<DetailsViewControllerDelegate>

//协议方法的实现

- (void)DetailsViewControllerDidCancel:  
(DetailsViewController *)controller  
{  
    [self dismissViewControllerAnimated:YES completion:nil];  
}  

- (void)DetailsViewControllerDidSave:  
(DetailsViewController *)controller  
{  
    [self dismissViewControllerAnimated:YES completion:nil];  
}


六:在原始场景执行prepareForSegue方法

//这个是如果目标场景是navigationcontroller的话,其他的照改

  1. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
  2. {  
  3.     if ([segue.identifier isEqualToString:@"AddPlayer"])  
  4.     {  
  5.         UINavigationController *navigationController =  
  6.           segue.destinationViewController;  
  7.         PlayerDetailsViewController  
  8.           *playerDetailsViewController =  
  9.             [[navigationController viewControllers]  
  10.               objectAtIndex:0];  
  11.         playerDetailsViewController.delegate = self;  
  12.     }  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值