可以检查segue从哪个viewcontroller然后做什么?

时间:2014-10-06 10:24:19

标签: ios objective-c iphone uitableview segue

例如,我有3个观点:

  • SaveContactView(TableView - 可编辑)
  • DetailedContactView(查看 - 仅显示)
  • ListContactView(TableView - 显示列表)

ListContactView包含Customers的动态记录。点击单元格将切换到DetailedContactView。

ListContactView包含“添加”按钮,该按钮位于SaveContactView。

当用户保存将转到DetailedContactView时,

SaveContactView。

DetailedContactView,用户可以“编辑”并返回到SaveContactView

这是我的问题:
ListContactView到DetailedContactView OR SaveContactView到DetailedContactView
在DetailedcontactView上的viewDidLoad上,当他来自某个视图时可以调用不同的方法/函数吗?

我不想创建一些冗余的额外重复“相似”视图。那么有什么最好的方法吗?

2 个答案:

答案 0 :(得分:2)

您只需在viewDidLoad DetailedContactView中对此视图的父级进行检查即可。 如果您正在使用push segue,请在UINavigationControler stack中检查此视图控制器的父视图控制器。

如果您是modally presentDetailedContactView,请找到[self presentingViewController]并采取相应措施。

或者从最后一页设置一个标志以区分父母。

可能会对你有帮助。

答案 1 :(得分:0)

正确的方法是实现SaveContactView和ListContactView的-prepareForSegue:sender:。将segue的目标转换为DetailedContactView类型并执行自定义设置。

// SaveContactView
- (void)prepareForSegue:(UIStoryboardSegue *)segue
                 sender:(id)sender
{
    DetailedContactView *detailedVC = segue.sourceViewController;
    [detailedVC setupForShowingFromSaveView];
}



// ListContactView
- (void)prepareForSegue:(UIStoryboardSegue *)segue
                 sender:(id)sender
{
    DetailedContactView *detailedVC = segue.sourceViewController;
    [detailedVC setupForShowingFromListView];
}