将数据从locationmanager(.. didrangbeacons)传递到collectionview(... cellforitemat)

时间:2017-05-15 23:23:28

标签: ios swift xcode uicollectionview cllocationmanager

每次locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion)做一个循环时我都要更新collectionview,所以我想把beacons变量从它传递到collectionview,如何在不使用全局变量的情况下完成它。 这是代码:

 func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
    if !beacons.isEmpty {
        //do things
    }
    else{
        //do other things
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! buttonBeaconsView

    //i want to use beacons data here


    //cell.backgroundColor = UIColor(white: 1, alpha: 0.8)
    //cell.createButton()
    //cell.layer.masksToBounds = true
    return cell
}

提前致谢

1 个答案:

答案 0 :(得分:1)

使您的视图控制器充当位置管理器的代理。对locationManager(_:didRangeBeacons:in:)的调用将发送给您的视图控制器。然后,它可以更新 INSTANCE 变量(不是全局变量)来保存新的信标信息列表,并告诉集合视图更新其内容。