基于 Segue 源的单个按钮的多个操作

Posted

技术标签:

【中文标题】基于 Segue 源的单个按钮的多个操作【英文标题】:Multiple Actions for Single Button Based on Segue Source 【发布时间】:2014-01-08 06:53:52 【问题描述】:

我有 ViewControllerA 和 ViewControllerB,它们都是包含项目列表的表 VC。现在,您可以单击 ViewControllerA 上的“添加项目”,这将打开 ListViewController,您可以在其中从列表中选择/添加新项目...有一个条形按钮“完成”项目,当您完成后,您将返回 ViewControllerA您的选择。

到目前为止,我只是通过将“完成”按钮拖到 Storyboards 中的 Exit 并选择了我创建的展开操作来完成所有这些操作(因此没有示例代码可显示)。

现在我想在 ViewControllerB 上,单击“编辑”按钮将我带到同一个 ListViewController,在那里我可以进行编辑并返回 ViewControllerB。在 Storyboard 中,当我拖动“完成”按钮并选择 ViewControllerB 展开操作时,它会从 ViewControllerA 中删除该操作。

我的问题:我是否必须从头开始拖拽 Storyboard 并以编程方式完成这一切?甚至可以让一个按钮基于源 ViewController 执行多个操作吗?

我很难找到准确的搜索查询,因此很难排除故障。

【问题讨论】:

【参考方案1】:

这可以通过枚举来完成,比如首先定义不同的状态或动作

typedef enum 
    firstAction,
    secondAction,
    soOnnn.....
 ActionTypeType;

现在当你要推送你的控制器时,定义一个类似的属性

@property (nonatomic, assign) LeagueType actionType;

并将其设置为您想要的操作

[backButton addTarget:self action:@selector(commonAction:) forControlEvents:UIControlEventTouchUpInside];

并为不同的动作设置一个开关盒,例如

-(void)commonAction:(id)sender 

 switch(_actiontype) 

 case firstAction:  // do you code here 
 

【讨论】:

以上是关于基于 Segue 源的单个按钮的多个操作的主要内容,如果未能解决你的问题,请参考以下文章

在多个管道上创建具有多个输入源的单个管道的意义,每个管道都定义了单独的输入源?

Oracle Apex 中具有动态操作的单个按钮上的多个条件

如何从一个 viewController 添加多个 segue

如何将情节提要中的多个按钮连接到单个动作?

具有多个嵌入 segues 的 ContainerView

Unwind segue - 返回多个视图