Lekcja 2. Cześć, jak ci na imię? – Xamarin.Mac

Opublikowane przez Mikołaj w dniu

Dzisiaj zrobimy aplikację która się pyta użytkownika o imię i w dalszej działalności je wyświetla, a więc zaczynamy!!!

Otwieramy Visual Studio i zamiast tworzyć nowy projekt otwieramy projekt o nazwie “Hello World” który założyliśmy na wcześniejszym artykule (Nie było cię gdy tworzyliśmy aplikację “Hello World”? Nie martw się i kliknij tutaj) i otwieramy Xcode Interface Builder

pojawi nam się okno Xcode pewnie przypominające to:

Wtedy zmieniamy nazwę label (klikając na nią dwukrotnie) na “Cześć, jak ci na imię?” klikamy w “kółko z kwadracikiem w środku”(inaczej biblioteka obiektów) w prawym górnym rogu

wpisujemy w wyszukiwarce obiektów która nam się pojawi przy kliknięciu na Bibliotekę obiektów, i w wyszukiwarce obiektów wpisujemy wpisujemy Text Field

i przeciągamy w odpowiednie miejsce na okienku w Xcode. Teraz klikamy na “dwa połączone kółeczka”

*Co to Text Field ? To pole tekstowe które pozwala wprowadzać ciąg znaków (string) do aplikacji.

w prawym górnym rogu też jak dłużej przytrzymacie możecie zmienić pozycję swojego Asystenta kodu czyli “dwóch połączonych kółeczek” gdy klikniecie powinno wam się pojawić takie okno:

Klikacie na “ViewController.m”(kontroler zapisujący inicjalizację obiektów, więcej o tym w następnych artykułach) otwiera wam się wysuwana lista:

Klikamy na “ViewController.h” I otworzy wam się okno “ViewController’a” :

*Co robi ten asystent kodu? A więc do niego przypinamy obiekty żebyśmy mogli z nimi komunikować się w kodzie, inaczej nie będziemy ich “widzieć” w kodzie.

Teraz gdy macie otworzonego Asystenta podłączania obiektów przytrzymujecie na waszej klawiaturze “Ctrl” i przeciągacie ten obiekt za nawias(w naszym przypadku to Etykieta(Label)) jak to wygląda popatrzcie:

gdy opuścicie linkę łączącą pojawi wam się okno z informacją o właściwościach połączenia, można tam zmienić wiele rzeczy ale my tylko zmienimy nazwę etykiety na “Pytanie”

i klikacie “Connect” pojawi wam się kod

@property (strong) IBOutlet NSTextField *Pytanie;

Co To Jest!!!???? No to wytłumaczę to kod połączenie naszej etykiety z kodem, dzisiaj za bardzo nie będziemy się w to wgłębiać

Powtórzcie tą samą operację z Text Field tylko nazwę zmieniacie na “Wprowadź_Imię” i klikacie “Connect”. Gdy połączycie Text Field’a z kodem kod połączenia będzie następujący:

@property (strong) IBOutlet NSTextField *Wprowadź_Imię;

następnie klikamy znowu na nasze “kółko z kwadracikiem w środku”(Żeby dodać nowy obiekt klikamy na linijki inaczej nie widzimy naszego “kółka z kwadracikiem w środku” po dodaniu do interfejsu naszego button’a klikamy znowu na “złączone ze sobą dwa kółka”) i wyszukujemy w wyszukiwarce “Push Button” przeciągamy nasz Button pod Text Field i klikamy dwa razy na nasz Button i zmieniamy nazwę na “OK”. Teraz żeby połączyć nasz Button z kodem wykonujemy te samą operację tylko że zmieniamy typ połączenia na Action i nazwę zmieniamy na “OK_Button_Cliked” (Żeby dodać nowy obiekt klikamy na linijki inaczej nie widzimy naszego “kółka z kwadracikiem w środku” czyli biblioteki obiektów, po dodaniu do interfejsu klikamy znowu na ikonę Asystenta kodu(“złączone ze sobą dwa kółka”))

I klikamy “Connect”

Tak powinien wyglądać kod Połączenia buttona:

- (IBAction)OK_Button_Cliked:(id)sender;

*Pamiętajcie jeśli chcecie programować(odwoływać się do obiektu w kodzie źródłowym) dany obiekt zawsze musicie go podpiąć, ponieważ nie będzie widoczny z pozycji kodu

*Czym różni się Outlet od Action? Różni się tym że gdy np podepniemy przycisk jako Outlet nie będziemy mogli robić metody która wykonywana jest po kliknięciu w przycisk, tylko będziemy mogli zmieniać nazwę przesuwać i inne w ten deseń rzeczy. Labele oraz inne rzeczy nie potrzebujące metody “Co się stanie gdy kliknięto” podpinajcie połączeniem Outlet

Teraz przechodzimy do Visual Studio i klikamy w “ViewController.cs” i w metodzie o nazwie ViewDidLoad(); i pod kontrolką base.ViewDidLoad(); napiszemy kod który na początku będzie czyścił zawartość textową wszystkich naszych obiektów czyli możmy zrobić coś takiego:

Do pobrania tekstu lub zmienienia go, używamy kontrolki

Nazwa-Kontrolki.StringValue

Przykład:

Wprowadź_Imię.StringValue = string.Format("Twój text");

Więc idziemy dalej, teraz pod metodą “public override NSObject RepresentedObject” musimy umieścić metodę która powoduję akcję jakiegoś przycisku(W naszym przypadku to jest OK_Button_Cliked)

*Żeby to ułatwić, powiem wam ciekawostkę przejedzcie do “ViewController.desinger.cs”

Pojawi wam się:

Zamiast pisać metodę która się wykona po kliknięciu wdany przycisk czyli

partial void przykladowy_Przycisk(Foundation.NSObject sender)
{

           
}

możecie kopiować to, co znajduje się w pliku desingowym naszej appki( o nazwie “ViewController.desinger.cs”):

partial void przykladowy_Przycisk(Foundation.NSObject sender);

Najłatwiej to skopiować, usunąć średnik(.; ) i dodać nawiasy, szybsze i poręczniejsze

Więc wklejamy pod metodą : “public override NSObject RepresentedObject ” metodę która powoduje akcję przycisku czyli:

partial void OK_Button_Cliked(Foundation.NSObject sender)
{

           
}

*Pamiętajcie że gdy podepniecie dany przycisk o danej nazwie musicie tą nazwą którą podpieliśmy musimy później użyć w metodzie inaczej nie będzie działać

Gdy ją wepniecie już metodę odpowiadającą za akcję przycisku pod metodą “public override NSObject RepresentedObject” to wprowadźcie do niej taki kod:

partial void OK_Button_Cliked(Foundation.NSObject sender)
        {

            Pytanie.StringValue = string.Format("Cześć, {0}",Wprowadź_Imię.StringValue);
            Wprowadź_Imię.StringValue = string.Format("");

        }

Wytłumaczę najpierw co ten kod robi a więc Pytanie(nasz label który pyta o imię użytkownika) bierzemy StringValue zmienia napis na “Część, (IMIĘ UŻYTKOWNIKA)” oraz czyścimy w ten sam sposób, bierzemy StringValue tekst jest równy “” czyli pustce i nasz TextField jest już bez imienia użytkownika..

Co to string.Format ?

string.Format to funkcja( Język C# ) która umożliwia nam wstawiania danych w formacie liczba-obiekt czyli

int przykladowyobiekt = 1;
string Przyklad = string.Format("{0}",przykladowyobiekt);

i nie musimy dodawać obiektów w taki sposób:

string Przyklad = "Hej " + przykladowyobiekt+ "Co tam?";

Hint: Opisane dla mniej zaawansowanych w C#

Jak pewnie zauważyliście powyższy sposób jest mniej poręczniejszy od poprzedniego, po to właśnie jest string.Format (Więcej na temat kontrolek tutaj)

Co w następnym wpisie:

  • Przełączanie między wświetlanymi widokami z pozycji kodu i bezpośrednio
  • Poznanie typów ukazywania Widoków w Xamarin.Mac
  • Wytłumaczenie działania typów
  • Teoria i Praktyka działania ViewController’ów (Widoków) w Xamarin.Mac

0 Komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *