Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
Ios 从视图控制器调用应用程序委托方法_Ios_Swift_Appdelegate - Fatal编程技术网

Ios 从视图控制器调用应用程序委托方法

Ios 从视图控制器调用应用程序委托方法,ios,swift,appdelegate,Ios,Swift,Appdelegate,我想知道是否可以从另一个ViewController调用应用程序委托方法 当应用程序启动时,调用应用程序(应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[NSObject:AnyObject]?)->Booli方法。我可以从另一个视图控制器再次调用此方法吗?此方法在应用程序启动时只调用一次。不能从ViewController中删除。而是在AppDelegete中生成用户定义的方法。并从ViewController调用

我想知道是否可以从另一个ViewController调用应用程序委托方法


当应用程序启动时,调用
应用程序(应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[NSObject:AnyObject]?)->Bool
i方法。我可以从另一个视图控制器再次调用此方法吗?

此方法在应用程序启动时只调用一次。不能从ViewController中删除。而是在AppDelegete中生成用户定义的方法。并从ViewController调用该方法。通过获取AppDelegate的对象

AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appDel <Your method>];
AppDelegate*appDel=(AppDelegate*)[UIApplication sharedApplication]。委托;
[appDel];

不确定为什么要这样做。你可能不应该,但为了回答这个问题,这里是:

// get a reference to the app delegate
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate

// call didFinishLaunchWithOptions ... why?
appDelegate?.application(UIApplication.shared, didFinishLaunchingWithOptions: nil)

在Swift 3.0中,您可以通过以下方式调用:

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.anyAppDelegateInstaceMethod()
建造商:

在代码末尾的AppDelegate类中添加构造函数

Swift 3.x

 class func shared() -> AppDelegate
{
    return UIApplication.shared.delegate as! AppDelegate
}
Swift 2.x

func appDelegate () -> AppDelegate
{
return UIApplication.sharedApplication().delegate as! AppDelegate
}
然后像这样添加一个var

var boolForFun = Bool()
如何在课堂上使用参考资料

方法

对于swift 3x 访问函数或变量

AppDelegate.shared().boolForFun = true
为了别的

appDelegate().methodFoo()
变数

appDelegate().foo

Swift 4、Swift 5

正如其他人所说,你不应该那样做。 如果您在某个应用程序生命周期中触发它,并使用通知中心执行特定的操作,则效果会更好

示例(在ViewController中):

但是,如果您确实必须调用app delegate方法,则可以使用此方法

let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate

你可以,但你不应该。你能告诉我怎么做吗?/检查这个解释:thahks帮助我解决这个问题。如果您有时间,请解释为什么要调用此函数两次。在任何情况下,请阅读Ashish Kakkad的链接帖子。当应用程序第一次午餐,然后显示条款和条件页面时,用户单击“同意”,他可以进入下一个登录vc,可以登录,但用户单击“拒绝”按钮,然后呼叫下一个vc,但用户按“登录”,他进入条款和条件页面并同意条件,在Swift4中使用以下内容让appDelegate=UIApplication.shared.delegate as!AppDelegate您的第一行缺少一个
[
。我想这是正确的行?
AppDelegate*AppDelegate=[(AppDelegate*)[UIApplication sharedApplication]delegate];
let appDelegate: AppDelegate? = UIApplication.shared.delegate as? AppDelegate