您好我正在开发一个Xamarin Forms应用程序。我在应用程序中实现了本地通知。通知触发后,单击通知后必须导航到特定页面。 在Appdelegate.cs的iOS项目中,我写了这个方法
public async override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
当用户点击通知时会触发。在这里,我需要导航到一个页面。在这里,我写了下面的代码行
App.Current.MainPage = new NavigationPage(new FavoritesPage());
它正在导航到“收藏夹”页面,但它只显示一个空白页面。 OnNavigatedTo方法不调用FavoritesViewModel,而在Onnavigated中调用一个方法,该方法将id(此id来自通知)作为参数获取特定的收藏 这里有两个问题 1)如何导航到特定页面 2)如何将参数与页面导航一起传递。 有人可以帮我解决这个问题。
答案 0 :(得分:4)
您想要推送到新页面,但您所做的就是更换应用程序的MainPage。请尝试<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="style.css">
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<div>
<div class="ids" id="1" style="float:left; clear:both">
<b style="color: #444444">Date</b>
<input id="enterdate" class="duedatetextbox" data-inline = "true" type="text" placeholder="Enter date" tabindex="101" disabled>
<div id= "setdate" style = "margin-left:0px;">
</div>
</div>
<div class="ids" id="2" style="float:left;">
<b style="color: #444444">Time</b>
<input class="duedatetextbox" type="text" placeholder="Enter time" tabindex="102">
</div>
</div>
。您可以在App中订阅PushAsync
:
MessagingCenter
当您拨打public App ()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
MessagingCenter.Subscribe<object, string>(this, "Push", async (sender, favoriteID) =>
{
var favorite = new FavoritesPage();
favorite.FavoriteID = favoriteID;
await (MainPage as NavigationPage).PushAsync(favorite, true);
});
}
时,此Lambda会触发
这里的字符串 01 是我要推送的ID。
在推送到新页面之前,我在此页面中定义了一个名为MessagingCenter.Send<object, string>(this, "Push", "01");
的属性,然后使用上面的方法传递字符串。
答案 1 :(得分:0)
使用MessagingCenter,为MessagingCenter.Send设置ContentPage类型或网址,然后设置MessagingCenter.Subscribe&amp;负载