Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 以编程方式枚举UIViewController的传出段_Iphone_Objective C_Ios_Xcode - Fatal编程技术网

Iphone 以编程方式枚举UIViewController的传出段

Iphone 以编程方式枚举UIViewController的传出段,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,对于视图控制器之间的iOS 5导航,UIViewController类提供了[self-performsguewithidentifier:@“MySegue”发送方:发送方]选择器。据推测,在幕后,故事板实现知道从任何视图控制器传出的序列标识符列表,即[@“MySegue”、@“MySegue2”]。是否有任何方法可以通过编程方式访问此列表,要获取可传递给performSegueWithIdentifier的标识符?没有用于枚举情节提要中分段的公共API。将与视图控制器相关的所有分段存储在数组

对于视图控制器之间的iOS 5导航,
UIViewController
类提供了
[self-performsguewithidentifier:@“MySegue”发送方:发送方]
选择器。据推测,在幕后,故事板实现知道从任何视图控制器传出的序列标识符列表,即
[@“MySegue”、@“MySegue2”]
。是否有任何方法可以通过编程方式访问此列表,要获取可传递给performSegueWithIdentifier的标识符?

没有用于枚举情节提要中分段的公共API。

将与视图控制器相关的所有分段存储在数组中,然后在视图控制器中访问此数组。

这是一种未记录的行为,但

NSArray *segueTemplates = [self valueForKey:@"storyboardSegueTemplates"] ;  

应返回一个数组,该数组包含可传递给
performsguewithidentifier
的所有可能序列值

对于Objective-C,如果我知道segue的名称,我通常会使用它

- (BOOL)isValidSegueId:(NSString *)segueId {
    NSArray *filteredArray = [[self valueForKey:@"storyboardSegueTemplates"] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"identifier = %@", segueId]];
    return filteredArray.count > 0;
}
斯威夫特:

    func isValidSegueId(_ segueId: String?) -> Bool {
    let filteredArray = (value(forKey: "storyboardSegueTemplates") as? NSArray)?.filtered(using: NSPredicate(format: "identifier = %@", segueId ?? ""))
    return (filteredArray?.count ?? 0) > 0
}

您可以将其与此链接结合起来,以获取当前视图控制器的所有分段,并对每个分段进行验证。

Sad。所以我唯一的选择就是捕获异常,如果它抛出。。。这不像苹果。我想用ios9重新评估这一点[尽管我的希望渺茫:D]似乎在别处得到了验证:-谢谢Rog!所有的赛格。