public override void DidRangeBeacons(ESTBeaconManager manager, NSArray[] beacons, ESTBeaconRegion region)
        {
            ESTBeacon beacon = (ESTBeacon)beacons.GetValue (0);

            if (beacon.Ibeacon.Proximity == CLProximity.Near) {
                label.Text = "It's Near";
                imageView.Image = UIImage.FromFile ("near_image.PNG");
            }

            if (beacon.Ibeacon.Proximity == CLProximity.Far) {
                label.Text = "It's Far";
                imageView.Image = UIImage.FromFile ("far_image.PNG");
            }

            if (beacon.Ibeacon.Proximity == CLProximity.Immediate) {
                label.Text = "It's Immediate";
                imageView.Image = UIImage.FromFile ("immediate_image.PNG");
            }

            if (beacon.Ibeacon.Proximity == CLProximity.Unknown) {
                label.Text = "It's Unknown";
                imageView.Image = UIImage.FromFile ("unknown_image.PNG");
            }
        }
            public override void DidRangeBeacons(ESTBeaconManager manager, NSArray[] beacons, ESTBeaconRegion region)
            {
                if(beacons.Length > 0)
                {
                    if(selectedBeacon == null)
                    {
                        // initialy pick closest beacon
                        selectedBeacon = (ESTBeacon)beacons.GetValue(0);
                    }
                    else
                    {
                        for(int i=0;i<beacons.Length;i++)
                        {
                            ESTBeacon cBeacon = (ESTBeacon)beacons.GetValue(i);
                            // update beacon if same as selected initially
                            if(selectedBeacon.Ibeacon.Major.UInt16Value == cBeacon.Ibeacon.Major.UInt16Value
                                && selectedBeacon.Ibeacon.Minor.UInt16Value == cBeacon.Ibeacon.Minor.UInt16Value)
                            {
                                selectedBeacon = cBeacon;
                            }
                        }
                    }

                    // beacon array is sorted based on distance
                    // closest beacon is the first one
                    string labelTextStr = String.Format("Beacon: {0} \nMajor: {1}, Minor: {2}\nRSSI: {3}\nRegion: ",
                        selectedBeacon.Ibeacon.ProximityUuid.AsString(),
                        selectedBeacon.Ibeacon.Major.UInt16Value,
                        selectedBeacon.Ibeacon.Minor.UInt16Value,
                        selectedBeacon.Ibeacon.Rssi
                        );

                    // calculate and set new y position
                    switch(selectedBeacon.Ibeacon.Proximity)
                    {
                        case CLProximity.Unknown:
                            labelTextStr += "Unknown";
                        break;
                        case CLProximity.Immediate:
                            labelTextStr += "Immediate";
                        break;
                        case CLProximity.Near:
                            labelTextStr += "Near";
                        break;
                        case CLProximity.Far:
                            labelTextStr += "Far";
                        break;
                    }

                    NSString labelText = new NSString(labelTextStr);
                    _distanceLabel.Text = labelText;
                }
            }