对于视图控制器之间的iOS 5导航,UIViewController
类提供[self performSegueWithIdentifier:@"MySegue" sender:sender]
选择器。据推测,故事板实现知道从任何视图控制器传出的segue标识符列表,即[@"MySegue", @"MySegue2"]
。有没有办法以编程方式访问此列表,以获取可传递给performSegueWithIdentifier的标识符?
答案 0 :(得分:14)
这是一种无证件的行为,但
NSArray *segueTemplates = [self valueForKey:@"storyboardSegueTemplates"] ;
应该返回一个数组,其中包含可以传递给performSegueWithIdentifier
的所有可能的segue值。
答案 1 :(得分:10)
在故事板中没有用于枚举segue的公共API。
答案 2 :(得分:1)
对于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
}
您可以将其与此链接https://stackoverflow.com/a/35060917/1058199结合使用,以获取当前视图控制器的所有序列并进行验证。
答案 3 :(得分:-1)
将与视图控制器相关的所有segue
存储在一个数组中,然后在视图控制器中访问该数组。