如何从按钮获得导航控制
本文关键字:导航 控制 按钮 | 更新日期: 2023-09-27 17:49:14
我知道如果我使用视图控制器,我可以使用这个:
var scanner = new MobileBarcodeScanner(this.NavigationController);
我怎么知道我使用什么导航里面的按钮我需要使用?
public class BarReaderButtonRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
// I tried this but don't worked
var scanner = new MobileBarcodeScanner(this.NavigationController);
// I tried this but do
var scanner = new MobileBarcodeScanner(this);
Element.Clicked += async(s_, e_) => {
// Setup our button
// Tell our scanner to use the default overlay
scanner.UseCustomOverlay = false;
//We can customize the top and bottom text of the default overlay
scanner.TopText = "Hold camera up to barcode to scan";
scanner.BottomText = "Barcode will automatically scan";
//Start scanning
var result = await scanner.Scan ();
HandleScanResult(result);
};
}
}
我不能在按钮渲染中使用此代码。或者以前有人这么做过?
该项目是iOS和Android的共享应用程序。
创建扫描仪的代码应该留在视图控制器/activity/page中。您仍然可以使用自定义按钮,并将所需的代码添加到Clicked事件处理程序中。
var myCustomButton = new BarReaderButton();
myCustomButton.Clicked += async(s, e) => {
var scanner = new MobileBarcodeScanner();
scanner.UseCustomOverlay = false;
//Start scanning
var result = await scanner.Scan ();
//Do something with the result
};
如果这是Xamarin。你还必须在页面代码中使用特定平台的代码,因为条形码阅读器需要Android上的上下文:
#if __IOS__
var scanner = new MobileBarcodeScanner();
#elif __ANDROID__
var scanner = new MobileBarcodeScanner(Forms.Context);
#endif