español - xamarin ios
Navega desde las formas de Xamarin hasta el nativo de Xamarin (1)
Mi problema es que necesito que las primeras páginas de mi aplicación sean Nativas. Necesito una forma de navegar desde una página de contenido de formularios de Xamarin a las primeras páginas nativas de la aplicación cuando un usuario cierra la sesión. ¿Hay alguna forma de una página de Formularios que inicie un ViewController nativo (iOS) o inicie una Actividad (Android)? Uso renderers personalizados regularmente.
Sería genial si pudiera de alguna manera reiniciar la aplicación o llamar a AppDelegate nuevamente o algo así.
Cualquier ayuda es apreciada.
Si usa renderizadores personalizados regularmente, entonces puede crear un renderizador de vista personalizado como este . Por ejemplo:
En PCL:
public class NewView : View
{
}
En la plataforma Android, cree un diseño en / Resources / layout primero así:
<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>
Luego crea el renderizador para NewView
siguiente manera:
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!";
}
}
Finalmente, use esta vista en ContentPage
para que sea como una página:
<ContentPage.Content>
<local:NewView />
</ContentPage.Content>
Para la plataforma iOS, debe haber un método para configurar ViewController
como control nativo para un renderizador de vistas. Pero no estoy familiarizado con iOS, puedes intentarlo.