İPhone (5) üzerinde geliştirme: ilk uygulamamız (III)

En önceki makalemiz Uygulamamızın arayüzüne bir Etiket, Metin Alanı ve Düğme ekledik. Etiket içeriğinin, Düğme tıklandığında TextField'a girilenlerle güncellenmesini istedik. (1. adım) projeyi oluşturduk ve (2. adım) ekranı tanımlamak için InterfaceBuilder'ı kullandık. Şimdi uygulamayı çalışır durumda bırakmak için geri kalan adımlara devam edeceğiz.

Adım 3. ViewController'da değişkenler oluşturun.

Arayüzümüz doğru. Aslında, Build & Go yapsaydık nasıl gittiğimizi görebilirdik:

Ancak düğmeye basıldığında hiçbir şey olmuyor, çünkü gerekli asgari gelişmeleri yapmadık. Bu 3. adımda, değişkenleri ve yöntemleri HelloWorldViewController'da hem arayüzde (.h dosyası) hem de uygulamada (.m dosyası) tanıtacağız. Bunu yapmak için, önceki gönderinin sonunda belirttiğimiz gibi, TextField'ın bir UITextField sınıfına ve Label'ın bir UILabel sınıfına karşılık geldiğini bilmemiz gerekir. Bu 2 sınıf, UIKit çerçevesi içindedir.

Interface Builder'ı kapatmadıysak ve kaydetmediysek, bunu yapıyoruz ve XCode'da HelloWorldViewController.h dosyasını açıyoruz. Şu anda kod şuna benzer bir şeye sahip olacak:

Zaten bazı Objective-C'ye bakıyoruz. Bu kodda, UILabel ve UITextField sınıflarının bulunduğu UIKit kütüphanesinin bir ithalat bildirimini görüyoruz. Arayüzün nasıl bildirildiğini ve UIKit'in jenerik UIViewController'den genişlediğini görüyoruz.

Arayüz koduna aşağıdaki kodu ekliyoruz:

Şimdi ne yaptığımızı açıklayabiliriz:

  • @İnterface bloğu içinde UILabel ve UITextField türünde 2 nitelik, sırasıyla 2 değişken adı * label ve * textField ile bildirdik. İleride IBOutlet görünür. Tüm bunlar nedir? Kendimizi açıklıyoruz. IBOutlet bir değişken türü değildir; Arabirim Oluşturucu'nun UILabel ve UITextField türündeki bu değişkenlerin varlığını bilmesine yardımcı olan bir yönergedir. Bu arada, önceki makalede, Interface Builder'daki kontrol nesnelerinin (düğmeler, etiket, metin alanı vb.) Değişken türlerini bilmeniz için size bir numara vermiştik. Öte yandan, değişken adının önündeki * sorunu Java programcılarını şaşırtabilir, C'ninki kadar değil ... ama Objective-C'de örnek değişkenlerini bu şekilde yazacağınızı öğrenin.
  • UILabel ve UITextField özellikleri bildirilir. atomik olmayan ve şimdilik göremeyeceğimiz tutuculuk, bellek yönetimi ile ilgilidir.
  • Bir yöntem, updateText ilan ettiğimizi görüyoruz. Önünde bunun bir örnek yöntem olduğunu ve bir sınıf yöntemi olmadığını belirten bir - işareti vardır (onlar için bir + işareti açıklanmıştır). Bunu açıklamaya başlayamayız çünkü bu temel nesne yönelimli programlamadır ... Bu yöntem hiçbir şey (yani, void) döndürmez ve id türünde bir parametre alır. Temel olarak, etiketin değerini güncelleyecek olan updateTexto yöntemimize çağrı yapılmasına neden olacak nesnenin tanımlayıcısını ifade eder. Tahmin edebiliriz çünkü bu kontrol düğmenin kendisi olacak ...

Bu yapıldıktan sonra 3. adımı tamamlamış oluruz.


Adım 4. Görünüm Kontrollerini Kontrolör Değişkenlerine Bağlayın.

İnceleyecek olursak, bir yandan Interface Builder ile arayüzümüzü geliştirdik ve diğer yandan HelloWorldViewController.h'de (HelloWorldViewController.m kontrolör sınıfının arayüzü) bu kontrollerle ilgili değişkenlere sahibiz. Bununla birlikte, görünüm ile kontrolör arasında hala bir ilişki yoktur, yani, örneğin, Arayüz Oluşturucu'da tasarladığımız metin alanını, koyduğumuz UITextField tipi değişkenle ilişkilendirmek için herhangi bir talimat vermedik. sınıf. Şimdi bu görevi yapacağız. HelloWorldViewController.xib'e tıklayarak Interface Builder'ı tekrar açıyoruz, metin kutusuna tıklıyoruz ve Inspector paletinde ikinci sekmeye (Text Field Connections) gidiyoruz. Referencing Outlets adlı bir bölümün işaretlenmemiş bir bölüm olduğunu görüyoruz. Bu, şu anda Interface Builder'ın bu metin alanı ile bir sınıfın IBOutlet'i (Interface Builder Outlet) arasında herhangi bir ilişki bilmediği anlamına gelir ... ancak HelloWorldViewController'ımızda bir UITextField IBOutlet'imiz var, bu yüzden onu bağlayalım.

Bunu yapmak için, şekilde gördüğümüz gibi, «Yeni Referans Çıkışı» yanındaki küçük daireye tıklayarak, Dosyanın HelloWorldViewController.xib adlı pencerenin Sahibine sürüklüyoruz. View (tam görünüm) ve textField (değişkenimiz) olmak üzere 2 seçenek seçmemize izin verecektir. Açıkçası textField'ı seçiyoruz ve bu nedenle metin kutumuzu UITextField türünün değişkeniyle ilişkilendiriyoruz. Bu arada, dosyanın Sahibi veya sahibi, denetleyici sınıfımızdan ne fazla ne de az ...

İşlemi kontrolör değişken etiketimizle ilişkilendirerek etiketle tekrarlıyoruz. Ve düğme ile farklı bir şey. Bu durumda, bunu updateTexto işlemimizle, ancak belirli bir olay için ilişkilendireceğiz. Bunu 'İçeride Rötuş Yap' etkinliğiyle yapın ve updateTexto yöntemimizi seçin:

Ve bu şekilde, Interface Builder ile tanımladığımız kontrolleri ve kontrolöre koyduğumuz değişkenleri zaten ilişkilendirmiş olduk. Interface Builder'ı her şeyi kaydederek kapatıyoruz ve XCode'a geri dönerek son adıma gidiyoruz.

Adım 5. Son gelişmeler.

XCode'da HelloWorldViewController.my'yi açıyoruz ve sınıfımızın şöyle görünmesi için aşağıdaki kodu koyuyoruz:

Yakından bakarsak, basitçe @synthesize bloğunu ve .h, updateTexto arabiriminde bildirilen yöntemin uygulamasını koyarız. Bu kodun altında çok sayıda yorumlanmış kodunuz olacak.

@ Synthesize satırı, OO dillerinde (kapsülleme) tipik olan tipik alıcı / ayarlayıcı (erişimciler / mutatörler) oluşturmaya benzer bir şey yapar. İçeriğin, örneğin metin kutusunun denetleyicisine ulaşması için onlara ihtiyacımız var.

UpdateTexto yöntemi, gördüğünüz gibi, etiketimizin metnini metin alanının içeriğiyle günceller. İşimiz bitti.

Şimdi, sadece Build & Go yapıyoruz ve bir metin dizesi girip düğmeye tıkladığınızda, etiketin içeriğinin güncellendiğini göreceksiniz. Bir sonraki makalede uygulamamız için iyileştirmeler sunacağız.


Bizi Google Haberler'de takip edin

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Pedro dijo

    Çok iyi öğretici, çok açık ve basit.

  2.   Rubdottocom dijo

    Pekala, çok kavun olmalıyım çünkü benim için işe yaramıyor. Bir String'deki değeri yakaladım ve metni alıyor ama etikete atamıyor, en azından boyamıyor çünkü label.text'i görmeye çalışıyorum ve bana kapsam dışı diyor ...

  3.   leo2279 dijo

    Öğreticilerinizi mükemmelleştirin, iPhone için bu gelişmeyi gerçekten çok iyi açıklıyor, umarım daha fazla eğitim yayınlamaya devam edersiniz.

    Saygılarımızla

  4.   Mariano dijo

    Merhaba, hepsi harika, ama işe yaramıyor. Metin alanı ve etiketle yapmayı öğrettiğiniz gibi, arayüz oluşturucunun görünümünü küpteki görünümle ilişkilendirmek zorunda kaldım. Geri kalanı için çok teşekkür ederim.