如何处理 UIActionSheet 的转换

Posted

技术标签:

【中文标题】如何处理 UIActionSheet 的转换【英文标题】:How to handle the transition from a UIActionSheet 【发布时间】:2013-09-05 13:23:45 【问题描述】:

场景:我正在尝试实现类似于 iPhone 的联系人簿应用程序来删除联系人。在 iPhone 的通讯录应用程序中,要删除联系人,可以进入“所有联系人”场景并单击联系人(例如“测试删除”),然后单击“编辑”按钮并向下滚动以找到“删除”按钮。单击“删除”按钮后,会显示带有“删除”和“取消”按钮的 UIActionSheet,可以单击“删除”删除联系人,并且联系人应用程序会自动返回“所有联系人”场景。

问题:在我的应用中,我添加了一个“删除”按钮和启动 UIActionSheet 的代码:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles:nil];

并添加委托:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
NSLog(@"actionSheet is called: clicked button - %ld, %@", (long)buttonIndex, [self.parentViewController description]); 

这些都工作正常。就像联系人应用程序一样,这是在“编辑”场景中删除一个项目,我想从这个“编辑”场景转换回“所有项目”场景,将正在编辑的项目从“全部”中删除物品的场景。我不知道如何进行过渡——这就是问题所在。

问题:如何实现委托(或其他任何东西),以便我的应用程序就像 iPhone 的联系人应用程序一样从“编辑”场景转换回“所有联系人”场景?

有什么想法吗?

【问题讨论】:

【参考方案1】:

试试下面的代码

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

    if (buttonIndex == actionSheet.destructiveButtonIndex) /// here you can get destructiveButton tapped
    
         [self.navigationController popToRootViewControllerAnimated:YES]; // and got to previous viewController;
    

【讨论】:

我还需要将正在编辑的项目的密钥返回到“所有项目”场景,以便可以从所有项目列表中删除它。 我认为 iPatel 的代码没有“工作”的原因之一是因为“编辑”场景是模态的,所以它没有与之关联的根视图控制器。请注意,涉及3个场景:1)。所有联系人; 2)。显示联系人; 3)。编辑联系人。现在要删除,它需要从“编辑联系人”变为“所有联系人”(并删除上面的联系人)。

以上是关于如何处理 UIActionSheet 的转换的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为DataFrame时如何处理错误“'NoneType'对象没有属性'keys'”

在MYSQL中将日期转换为日期范围---如何处理日期中的间隙

如何处理 React / Flux 组件中的状态转换

“私有”可见性修饰符 - 将 C# 转换为 VB 时如何处理差异?

如何处理 Parse.com 将 HTTP 错误转换为 NSError?

使用带有自动模式检索的 LoadJobs 时如何处理 Avro 到 BigQuery 的类型转换