[英]Programmatically enumerate outgoing Segues for a UIViewController
對於視圖控制器之間的 iOS 5 導航, UIViewController
類提供了[self performSegueWithIdentifier:@"MySegue" sender:sender]
選擇器。 據推測,在[@"MySegue", @"MySegue2"]
故事板實現知道從任何視圖控制器傳出的 segue 標識符列表,即[@"MySegue", @"MySegue2"]
。 有沒有辦法以編程方式訪問此列表,以獲取可以傳遞給 performSegueWithIdentifier 的標識符?
這是一種無證行為,但
NSArray *segueTemplates = [self valueForKey:@"storyboardSegueTemplates"] ;
應該返回一個數組,其中包含可以傳遞給performSegueWithIdentifier
所有可能的 segue 值。
沒有用於枚舉故事板中的 segue 的公共 API。
對於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結合使用以獲取當前視圖控制器的所有 segue 並驗證每個。
將所有與視圖控制器相關的segue
存儲在一個數組中,然后在視圖控制器中訪問這個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.