Archiwum kategorii: Xamarin

Problemy z emulatorem Android w Xamarin

Problemy z emulatorem Android w Xamarin

Works On My Machine

Jest to artykuł z cyklu u mnie działa. Za wszelkie szkody powstałe z niewłaściwego użycia Hyper-V nie odpowiadam.

Problemy z emulatorem Android w Xamarin

Pewnie wielu z was przy swoich pracach nad Xamarin Visual Studio powitało was komunikatem „Could not connect to the debugger”.

Niestety po ostatnich aktualizacjach Xamarin Visual Studio nie może się podłączyć do emulatora w trybie debug. Przyczyną jest ustawienie Processor compatibility dla Hyper-V.

katastrofa

Recepta

Można temu zaradzić używając konsoli Hyper-V.

Krok 1

Odpalamy konsolę i idziemy do ustawień wirtualki z emulatorem.

Ustawienia maszyny wirtualnej Hyper-V

 

Krok 2

Przestawiamy ustawienie Processor compatibility.

Processor compatibility

Tworzymy jakiś sample project Xamarin i odpalamy wszystko w trybie Administratora żeby emulator załapał ustawienia.

 

Xamarin.iOS – Jak pokazać kontrolkę daty tak jak w kalendarzu iOS

Jest to tips & tricks działający dla Xamarin.iOS

W dzisiejszym odcinku chciałbym pokazać wam jak dodać kontrolkę daty „iOS style” (z takim fajnym rozwijaniem wierszy jak w np. w kalendarzu).

Xamarin.iOS – Jak pokazać kontrolkę daty tak jak w kalendarzu iOS

Ja w swoim przykładzie użyłem na Storyboard kontrolki TableViewController. Wywyższa kontrolka zapewnia nam funkcjonalność kontrolki TableView i ScrollView w jednym.

Następnie należy skonfigurować sekcji i wiersze, dodajemy kontrolkę DatePicker i wysokość wiersza ustawiamy na 216.

Reszta magii dzieje się w kodzie… Cały kod źródłowy można znaleźć na GitHub

Kod

using Foundation;
using System;
using UIKit;

namespace DatePickerDemo
{
    public partial class MainViewController : UITableViewController
    {
        private NSDateFormatter formatter;
        private bool showDatePicker;

        public MainViewController (IntPtr handle) : base (handle)
        {
            formatter = new NSDateFormatter();
            formatter.DateStyle = NSDateFormatterStyle.Short;
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();


            dateLabel.Text = formatter.ToString(datePicker.Date);
            datePicker.ValueChanged += DatePicker_ValueChanged;
        }

        public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
        {
            nfloat rowHeight = tableView.RowHeight;

            if(indexPath.Section == 1 && indexPath.Row == 2)
            {
                rowHeight = 0;
            }

            if (showDatePicker && (indexPath.Section == 1 && indexPath.Row ==2))
            {
                rowHeight = 216;
            }

            return rowHeight;
        }

        public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            tableView.BeginUpdates();

            if (indexPath.Section == 1 && indexPath.Row == 1)
            {
                showDatePicker = !showDatePicker;
            }

            tableView.DeselectRow(indexPath, true);
            tableView.EndUpdates();
        }

        private void DatePicker_ValueChanged(object sender, EventArgs e)
        {
            dateLabel.Text = formatter.ToString(datePicker.Date);
        }
    }
}