注册 登录
主题 : 请问一下swift全局变量有关问题
级别: 新手上路
UID: 677121
精华: 0
发帖: 2
可可豆: 11 CB
威望: 11 点
在线时间: 3(时)
注册时间: 2019-01-26
最后登录: 2019-02-28
0 楼:  发表于: 2019-01-26 13:27    发自: Web Page

请问一下swift全局变量有关问题   

请问下大家
? ? func makeTimer() {
? ? ? ? //穿件计时器
? ? ? ? timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { _ in
? ? ? ? ? ? print(self.leftTime)
? ? ? ? ? ? if self.leftTime < 1 {
? ? ? ? ? ? ? ? self.timer.fireDate = Date.distantFuture// 计时器暂停
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? self.leftTime -= 1
? ? ? ? ? ? }
? ? ? ? })
? ? }
这是计时器函数,leftTime是全局变量。
下面的是cell中引用计时器的代码


? ? ? ? ? ? ? ? ? ? makeTimer()
? ? ? ? ? ? ? ? ? ? print("left5555555:\(leftTime)")
? ? ? ? ? ? ? ? ? ? cell.lefttime.text = "(\(leftTime))秒后放弃订单"


运行后计时器可以运行的,但是cell 中的leftTime就一直不变化。是怎么回事呢

级别: 新手上路
状态: 连续签到 - [17天]
UID: 413574
精华: 0
发帖: 13
可可豆: 94 CB
威望: 60 点
在线时间: 1087(时)
注册时间: 2014-12-11
最后登录: 2019-02-15
1 楼:  发表于: 2019-01-31 16:42    发自: Web Page
你应该把cell中的label变化(cell.lefttime.text = "(\(leftTime))秒后放弃订单")
放在定时器中的判断计时器是否需要暂停处
就是应该和(self.leftTime -= 1)放在一起
级别: 侠客

状态: 连续签到 - [75天]
UID: 497805
精华: 0
发帖: 132
可可豆: 671 CB
威望: 550 点
在线时间: 143(时)
注册时间: 2015-08-15
最后登录: 2019-04-03
2 楼:  发表于: 2019-03-08 14:23    发自: Web Page
计时器方法的block回调 可能会有延迟的,可能你的cell加载出来之后,block回调还没走,但是下一个cell就可能开始加载了l

级别: 骑士
UID: 661077
精华: 0
发帖: 384
可可豆: 482 CB
威望: 482 点
在线时间: 154(时)
注册时间: 2018-09-07
最后登录: 2019-04-18
3 楼:  发表于: 2019-03-11 17:07    发自: Web Page
cell或者tableview刷新了吗
级别: 新手上路
UID: 492686
精华: 0
发帖: 13
可可豆: 85 CB
威望: 85 点
在线时间: 110(时)
注册时间: 2015-07-27
最后登录: 2019-04-11
4 楼:  发表于: 2019-03-18 10:14    发自: Web Page
没有把lefttime的变化更新到UI    你把cell.lefttime.text = "(\(leftTime))秒后放弃订单"  放在timer的block中  或者在timer block中去单独更新这个cell

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部