我使用Visual Studio for Mac创建了一个小应用程序,用于iOS和Xamarin Forms。它有三个XAML页面。由于此应用程序打算发送无法使用模拟器完成的消息,因此,我尝试在我的iPhone上使用Xamarin Live。应用程序已安装并在iPhone Xamarin Live上显示OK,但是当我点击主页上的按钮时,它会将我们按照预期完全按照消息页面进行操作。 “消息”页面上有一个“发送消息”按钮,当单击此按钮时,会显示一个异常,说明未捕获的异常:索引超出了数组的范围(IndexOutOfRangeException)'。它似乎是页面堆栈的问题,但不幸的是,我无法确定它。以下是代码。
单击主页上的处理程序
if (xMessagePage == null)
xMessagePage = new xMessagePage();
try
{
await Navigation.PushAsync(xMessagePage);
}
catch(Exception ex)
{
DisplayAlert("BtnMessage_Clicked", ex.Message, "OK");
}
单击消息页面上的Handler,尝试调出UIActivityViewController
public void BtnMessage_Clicked(Object sender, EventArgs eArgs)
{
uMessageController umc = new uMessageController();
try
{
umc.SendTextMessage("en-us", eMessageType.Text);
}
catch(Exception ex)
{
uShareMessages.ShowMessageBox("Message_Clicked", ex.Message);
}
finally
{
}
}
void uMessageController::SendTextMessage(string strTextMsg, "en-us", eMessageType.Text)
{
try
{
string strDefaultMsg = "MyTest Message1"
string strDefAttachmentName = "NYC";
if(string.IsNullOrEmpty(strTextMsg))
strTextMsg = strDefaultMsg;
string strTextMsg1 = uShareMessages.GetMessageString(strCulture);
string existingSound = NSBundle.MainBundle.PathForResource(strDefAttachmentName, "mp3");
var remFileUrl = NSUrl.FromFilename(existingSound);
lstMessageItems = new System.Collections.Generic.List<NSObject> { new NSString(strTextMsg1 ?? string.Empty) };
lstMessageItems.Add(remFileUrl);
UIActivityViewController avController = new UIActivityViewController(lstMessageItems.ToArray(), null);
avController.ExcludedActivityTypes = vcActivitiesExcluded;
avController.CompletionWithItemsHandler = ActivityViewController_CompletionHandler;
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(avController, true, null);
}
catch(Exception ex)
{
uShareMessages.ShowMessageBox("SendTextMessage", ex.Message);
}
}
提前致谢, 辩护人