当设备进入后台时,我有一个计时器正在运行,因为我想检查我服务中的少量数据.我在app delegate中的applicationDidEnterBackground方法中使用以下代码
UIApplication *app = [UIApplication sharedApplication];
//create new uiBackgroundTask
__block UIBackgroundTaskIdentifier bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
//and create new timer with async call:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//run function methodRunAfterBackground
NSString *server = [variableStore sharedGlobalData].server;
NSLog(@"%@",server);
if([server isEqual:@"_DEV"]){
arrivalsTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(getArrivals) userInfo:nil repeats:YES];
}
else {
arrivalsTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(getArrivals) userInfo:nil repeats:YES];
}
[[NSRunLoop currentRunLoop] addTimer:arrivalsTimer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});
Run Code Online (Sandbox Code Playgroud)
这工作绝对正常,直到设备自动锁定,然后计时器停止滴答.有关如何阻止这种情况发生的任何建议?默认的实时时间是5分钟,因此大多数设备将在此偶数之前锁定一次.
谢谢
我在带有UISwitch的动作表中有一个自定义视图,我想在交换机切换时捕获.交换机显示正常,但是当我使用addTarget来调用该函数时,我得到 - 使用未解析的标识符'deferSwitchToggled'
let deferredFilterToggle: UISwitch = {
let deferredFilterToggle = UISwitch()
deferredFilterToggle.translatesAutoresizingMaskIntoConstraints = false
deferredFilterToggle.addTarget(self, action: #selector(deferSwitchToggled(_:)), for: UIControlEvents.valueChanged)
return deferredFilterToggle
}()
Run Code Online (Sandbox Code Playgroud)
功能如下.
func deferSwitchToggled(mySwitch: UISwitch) {
if mySwitch.isOn {
showDeferred = true
} else {
showDeferred = false
}
}
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
我目前正在开发一个项目,需要在UITableView中显示客户列表,相关的单元格然后会切换到TabView以在选项卡式ui中显示详细的客户记录.
我已经使用所需的TableView设置了故事板并且已经填充了.TabViews所有设置我已经向主TabView控制器添加了一个自定义类,它可以获取ID(询问服务和返回更多数据所需)和客户名称.我还为第一个选项卡添加了一个UIViewController,我需要在其中获取ID值.
我似乎无法掌握传递的ID或公司名称.我已经尝试导入UITabView的.h文件.我知道UITabView .h文件正在填充.m文件中的值我使用客户名称更新导航栏的标题.但是,每当我在线上断点获取单个选项卡的.m文件中的ID时,它总是返回nil.
我使用以下代码尝试获取此值:
companyTabController *headerData = [companyTabController alloc];
_companyName_lbl.text = headerData.companyName;
_companyID_lbl.text = headerData.ID;
Run Code Online (Sandbox Code Playgroud)
我尝试过上述几种变体,但都无济于事.