所以我有一个从 ViewController 到 SecondViewController 的转接。此 segue 由 ViewController 中的 UIButton 和模态呈现的 SecondViewController 触发。 Segue 的标识符已设置(“SegueIdentifier”),我可以从我的 ViewController 中以编程方式调用 segue。
当我尝试在我的 AppDelegate 中做同样的事情时,我收到编译器无法找到带有我设置的标识符的 segue 的错误。
let viewController = ViewController()
viewController.performSegueWithIdentifier("SegueIdentifier", sender: nil)
同样,我从字面上复制并粘贴了 ViewController 中上述方法的 performSegueWithIdentifier 方法调用,其中我还为相同的 segue 调用了 performSegueWithIdentifier 并且它有效。
有什么想法吗?
最佳答案
在我的一个项目中,我正在处理这样的情况,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSString *identifier;
BOOL isSaved = [[NSUserDefaults standardUserDefaults] boolForKey:@"loginSaved"];
if (isSaved)
{
identifier=@"home1";
}
else
{
identifier=@"dis1";
}
UIStoryboard * storyboardobj=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *screen = [storyboardobj instantiateViewControllerWithIdentifier:identifier];
[self.window setRootViewController:screen];
return YES;
}
它在 objective-c 中,仅供引用。如果对你有帮助的话:)
更新:
在 swift 中,例如,
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var identifier: String = String()
let isSaved = NSUserDefaults.standardUserDefaults().boolForKey("loginsaved")
if isSaved
{
identifier = "home1"
}
else{
identifier = "dis1"
}
let storyboardobj: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let screen: UIViewController = storyboardobj.instantiateViewControllerWithIdentifier(identifier)
self.window!.rootViewController = screen
// Override point for customization after application launch.
return true
}
希望这会有所帮助:)
关于ios - 无法通过 AppDelegate 的标识符调用 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253372/