首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何“取消”UIStoryBoardSegue

如何“取消”UIStoryBoardSegue
EN

Stack Overflow用户
提问于 2011-10-19 18:20:36
回答 10查看 31.8K关注 0票数 45

有没有人知道如何有条件地“停止”段转换:

我的表视图单元格表示可以在下钻“详细”视图中查看的产品...或者不能!(这取决于几件事)

现在我的应用认为所有的产品都是“解锁”的:

代码语言:javascript
复制
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
    ListaProdottiController *prodottiViewController = [segue destinationViewController];
    prodottiViewController.blocco = [self.fetchedResultsController objectAtIndexPath:selectedRowIndex];
}

此时,如何取消行选择=>下钻?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-03-19 04:26:17

如果你的目标是iOS 6或更高版本,那么我对最干净的方法的了解如下:

代码语言:javascript
复制
-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
    if([identifier isEqualToString:@"show"])
    {
        NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
        Blocco *blocco = [self.fetchedResultsController objectAtIndexPath:selectedRowIndex];
        return [blocco meetRequiredConditions];
    }
    return YES;
}

其中有一种方法

代码语言:javascript
复制
-(BOOL) meetsRequiredConditions;

如果允许向下钻取的“几件事”是有效的,那么在您的Blocco类上定义的返回YES。

票数 81
EN

Stack Overflow用户

发布于 2011-10-21 00:37:55

我不知道这是否是正确的方法,但我发现了一个变通方法。

在故事板中,我从视图控制器的状态栏中关联(control+click)一个段。为段指定一个ID (例如: switchSegue)。

现在,通过代码中的一个操作(在我的代码中我使用了一个按钮),我调用:

代码语言:javascript
复制
 [self performSegueWithIdentifier:@"switchSegue" sender:sender];

这样,您就可以控制是否执行段。试试herehere中帮助我的教程

希望这能有所帮助。

票数 32
EN

Stack Overflow用户

发布于 2012-01-22 21:25:51

我使用了一种更简单、更整洁的方法。

序列图像板

  1. 使用不同的标识符创建两个相同的单元格。例如:"cellWithSegue“并将第一个单元格("cellWithSegue")与您要显示的段连接。
  2. 不将第二个单元格与任何段连接。

表视图

  1. On cellForRowAtIndexPath,实现一个逻辑来确定单元格是否应该链接到段。
  2. 对于应该链接到段的单元格使用"cellWithSegue“标识符,对于其余部分则使用"cellWithoutSegue".

这种方式看起来更容易实现,也不会改变segues的工作方式。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7819796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档