gpt4 book ai didi

ios - 从 Xamarin 表单导航到 Xamarin Native

转载 作者:行者123 更新时间:2023-12-01 19:50:56 25 4
gpt4 key购买 nike

我的问题是我要求我的应用程序的第一页是 native 的。当用户注销时,我需要一种从 Xamarin 表单内容页面导航到应用程序的第一个 native 页面的方法。无论如何从表单页面启动 native ViewController (iOS) 或启动 Activity (Android)。我经常使用自定义渲染器。

如果我能以某种方式重新启动应用程序或再次调用 AppDelegate 之类的,那就太好了。

任何帮助表示赞赏。

最佳答案

如果您经常使用自定义渲染器,那么您可以创建自定义 View 渲染器,如 this .例如:

在 PCL 中:

public class NewView : View
{
}

在 Android 平台中,首先在/Resources/layout 下创​​建一个布局,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/tv"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="this is new view." />
<Button android:id="@+id/btn"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="change text" />
</LinearLayout>

然后为 NewView 创建渲染器像这样:
public class NewViewRenderer : ViewRenderer
{
private TextView tv;
private Android.Widget.Button btn;

protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.View> e)
{
base.OnElementChanged(e);
if (Control == null)
{
var context = Xamarin.Forms.Forms.Context;
LayoutInflater minflater = context.GetSystemService(Context.LayoutInflaterService) as LayoutInflater;
var view = minflater.Inflate(Resource.Layout.newview, this, false);
tv = view.FindViewById<TextView>(Resource.Id.tv);
btn = view.FindViewById<Android.Widget.Button>(Resource.Id.btn);
SetNativeControl(view);
}

if (e.OldElement != null)
{
btn.Click -= Btn_Click;
}

if (e.NewElement != null)
{
btn.Click += Btn_Click;
}
}

private void Btn_Click(object sender, EventArgs e)
{
tv.Text = "Text changed!";
}
}

最后在 ContentPage 中使用这个 View 使它像一个页面:
<ContentPage.Content>
<local:NewView />
</ContentPage.Content>

对于iOS平台,应该有设置 ViewController的方法作为 View 渲染器的 native 控件。但是我对iOS不熟悉,你可以试试。

关于ios - 从 Xamarin 表单导航到 Xamarin Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45943652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com