作者whitefox0102 (一个人踢球的小正)
看板MacDev
标题[问题] swift delegate传值後显示在label
时间Mon Jan 8 20:38:44 2018
我在一个viewcontroller里面分成上下两块,
上面是一个UIView
下面是一个container view并且有另外用一个ViewControllerB去控制
我在要传值得controller加入了以下代码
protocol sendItemPriceDelegate {
func sendPrice(_ price:String)
}
并在class 下面宣告
var delegate:sendItemPriceDelegate?
然後在API回来的地方加入
self.delegate = ViewControllerB() as sendItemPriceDelegate
delegate?.sendPrice(price)
回到controllerB继承delegate并实作方法
func sendPrice(_ price: String) {
print(price)
itemPriceLabel!.text = price <===无法显示出来
}
在印出price的时候是有值的
值是有传过来的
但是要将它放在Label显示出来却一直显示不出来
请大大们解惑
感谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.70.218.213
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1515415128.A.C07.html
1F:推 gundam00: DispatchQueue.main.async{ table.text = value }试试 01/08 20:45
2F:→ gundam00: 看 01/08 20:45
3F:推 Sexyfather: UI 更新应该是要放在main thread 没错 01/08 22:41
4F:推 cryinglove: 你指定delegate时,是指给另一个你初始化出来的 viewC 01/09 09:40
5F:→ cryinglove: ontrollerB 01/09 09:40
6F:→ whitefox0102: 一楼大大~照做了可是没用耶Orz 01/09 11:38
7F:→ whitefox0102: cryinglove大~那我应该如何做才对呢? 01/09 11:38
8F:推 RINPE: 这行确定有进去吗? itemPriceLabel!.text = price 设 01/09 12:51
9F:→ RINPE: 中断看一下 01/09 12:51
10F:→ whitefox0102: 有进去但是label的值都没有改变 01/09 13:13
11F:推 booray: 看起来你 ViewControllerB() 这里弄出来另一个 viewcontr 01/09 13:31
12F:→ booray: ollerb 物件而不是显示在萤幕上那个要不要考虑改用 notif 01/09 13:31
13F:→ booray: ication 实作? 01/09 13:31
14F:→ whitefox0102: 刚刚改用了notifacation了~可是这中间会顿一下 01/09 14:31
15F:→ whitefox0102: 点击按钮传送通知到改变Label大约要4秒 01/09 14:33
16F:→ whitefox0102: 甩笨了...自己多调用了别的func,使用notifacation 01/09 14:45
17F:→ whitefox0102: 後就成功实现了~感谢楼上诸位大大的帮忙^^ 01/09 14:46