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

2 Komentarze

Mikołaj · 29 grudnia, 2019 o 12:29 pm

Następna lekcja na temat Kontrolerów Widoków(View Controller) w Xamarin.Mac: http://na-macu.pl/2019/08/24/viewcontroller-xamarin-mac/

fleck 5600sxt 40000 · 5 kwietnia, 2020 o 2:17 pm

Right now it sounds like Expression Engine is the best blogging platform available right now.
(from what I’ve read) Is that what you’re using on your blog?

Dodaj komentarz

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