【问题标题】:How can I go back after saving using UINavigation?使用 UINavigation 保存后如何返回?
【发布时间】:2014-03-29 03:05:45
【问题描述】:

https://www.dropbox.com/s/duosl4d1fdsxehq/Storyboard.png

这是我的实际故事板。 我正在为我的应用程序使用 UINavigation Controller。当我按添加时,我打开视图以将新费用添加到我的表中。 问题是当我按下“保存”时我不知道我应该做什么?我尝试在前一个视图中添加一个新的推送序列并且它正在工作但在后退按钮项目建议我之后返回“添加新费用”视图,它不应该这样做。 我怎样才能重现动画后退按钮但使用我的保存按钮?

【问题讨论】:

    标签: ios objective-c uinavigationcontroller save segue


    【解决方案1】:

    在第二个视图控制器上,在处理点击保存按钮的方法中,添加: [self.navigationController popViewControllerAnimated:YES];

    【讨论】:

    • 这是一个好的开始,谢谢。但是我在第一个视图控制器中的 tableview 没有更新。
    • 在第一个视图控制器中,添加: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [_tableView 重载数据]; }
    【解决方案2】:

    我知道那是很久以前的事了,但您应该在第二个视图上创建一个委托。

    @protocol ExpenseProtocol;
    
    @interface NewExpenseViewController : UIViewController
    @property (nonatomic, weak) id<ExpenseProtocol> *delegate;
    @end
    
    @protocol ExpenseProtocol <NSObject>
    - (void)didCreateNewExpense:(Expense)newExpense;
    @end
    
    @implementation NewExpenseViewController
    
    - (void)savePressed:(id)sender {
        if (self.delegate && [self.delegate responseToSelector:@selector(didCreateNewExpense:)]) {
            [self.delegate didCreateNewExpense:_newExpense];
        }
    }
    
    @end
    

    然后在你的第一个视图控制器中

    @interface ListExpenseViewController () <ExpenseProtocol>
    @end
    
    @implementation ListExpenseViewController    
    
    - (void)didCreateNewExpense:(Expense)newExpense {
        if (newExpense) {
            [_arrayExpense addObject:newExpense];
        }
        [self.tableView reloadData];
    }
    
    @end
    

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2021-11-11
      相关资源
      最近更新 更多