Dav*_*ohn 18 iphone ios xcode-storyboard swift
我觉得我在这里错过了一招
我只想在调用applicationDidBecomeActive时调用当前活动视图控制器上的viewDidLoad或viewDidAppear,这样当我再次从后台启动应用程序时,我可以重置一些动画或其他任何动画.我的一些观点并不关心,但其他人真的需要知道.
我正在使用Storyboards,我的app委托文件具有标准功能 - 但所有都使用EMPTY主体.例如,didFinishLaunchingWithOptions只返回YES而不执行任何操作.故事板自动完成我猜的一切.
那么如何从我相当空白,无信息的应用代表那里与当前的视图控制器进行通信?
Ben*_*ron 55
操作系统不会从您的应用代理发送通知,而是自动发送通知,您可以观察到:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(initSongInfo)
name:UIApplicationDidBecomeActiveNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
当然,请确保在dealloc方法之前或之内的某个时间停止观察,方法是:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIApplicationDidBecomeActiveNotification
object:nil];
Run Code Online (Sandbox Code Playgroud)
Bra*_*ski 22
我建议使用通知.
在您的app代理的applicationDidBecomeActive方法中放入此代码:
[[NSNotificationCenter defaultCenter] postNotificationName:@"appDidBecomeActive" object:nil];
Run Code Online (Sandbox Code Playgroud)
在当前的活动视图控制器的init方法中订阅通知.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updateStuff)
name:@"appDidBecomeActive"
object:nil];
Run Code Online (Sandbox Code Playgroud)
在您的控制器中实现"updateStuff"方法,您应该能够在应用程序变为活动状态时执行任何操作.
迅捷版:
您可以在 viewDidLoad 中添加此行
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(viewDidBecomeActive), name: UIApplicationDidBecomeActiveNotification, object: nil)
func viewDidBecomeActive(){
print("viewDidBecomeActive")
}
Run Code Online (Sandbox Code Playgroud)
NotificationCenter.default.addObserver(self, selector: #selector(viewDidBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
@objc func viewDidBecomeActive() {
print("viewDidBecomeActive")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17407 次 |
| 最近记录: |