2013-04-06 32 views
6

iOS geliştirmede göreceli olarak yeni durumdayım. Önce Android için bir uygulama geliştirdim ve şimdi iOS’a taşıyorum. Anlayamadığım bir şey, ViewController "gitmekten" nasıl yapılır. Android'de finish() yöntemine alışkınım. Bu yöntemle, mevcut etkinlik sona erer ve kullanıcı mevcut ekranın açılmasından önce açık olan bir önceki ekranla sunulur.Android sürümüne eşdeğer iOS sürümü()

Yapmaya çalıştığım şey, bir kayıt kaydedildikten sonra "oluşturma" ekranımın kapanmasıdır. Android dünyasında, sadece finish() yöntemini çağırırdım ve bununla ilgilenirdi. IOS eşdeğeri nedir?

Aşağıdaki kodu iOS uygulamasında denedim, böylece görünümün animasyonlu hale geleceğini umuyordum.

[self.navigationController popToRootViewControllerAnimated:YES]; 

Düzenleme: görünümü aşağıdaki gibi sunuldu. controllers gibi tanımlanır

SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsView"]; 
controllers = [NSArray arrayWithObject:vc]; 
self.sideMenu.navigationController.viewControllers = controllers; 
[self.sideMenu setMenuState:MFSideMenuStateClosed]; 

:

NSArray *controllers = nil; 
+0

Görünüm denetleyiciniz ekranda nasıl görüntülenir? Bunu kaldırmanın tek yolu, nasıl gösterildiğini geri almaktır. – MishieMoo

+0

Peki, SettingsViewController'ı ortadan kaldırmaya mı çalışıyorsunuz? Nereye gitmesini istersin? Gösterdiğiniz koddan yığındaki tek görünüm denetleyicisidir. –

+0

Uygulamamı bir yan menü ile geliştiriyorum. Uygulama yüklendiğinde, bir ekran sunulur. Kullanıcı bir yan menü açma ve oradan bir menü öğesi seçme seçeneğine sahiptir. Yukarıdaki düzenlememdeki kod, kullanıcı yan menüden bir öğe seçtiğinde yürütülür. – acedanger

cevap

14

Nasıl bu görünümü denetleyicisi mevcut oldu?

presentViewController:animated:completion: kullandınız mı?

[self dismissViewControllerAnimated: YES]; 

Eğer pushViewController:animated: kullanıyorsanız, size kalıcı bir görünüm bahsetmiyoruz: Eğer öyleyse, böyle bir şey istiyorum. Yığın üzerine bastığınız normal bir ViewController hakkında konuşuyorsunuz. biz,

[self.navigationController popViewControllerAnimated: YES]; 
+0

Geçerli görünüm denetleyicisini sorguma sunmak için kullandığım kodu ekledim. – acedanger

1

olsa finish() ve [self dismissViewControllerAnimated:YES] işlevsellik açısından benzer, ama biz Android'de finish() yöntemini çağırdığınızda onlar, tam olarak aynı değildir: bu, sen görünümü denetleyicisi pop gerekiyor "geri al" Kime Programatik olarak, sisteme aktiviteyi tamamen bellekten yok etmeye, onDestroy() aktivite yaşam döngüsü geri çağrısını geçersiz kıldığımızda ve bir günlüğü eklediğimizde, finish() çağrıldığında, günlükler gösterilir. Sistemin kaynaklara ihtiyacı olduğunda onDestroy() da denir ve etkinliği bitirerek belleği serbest bırakır. Ancak

[self dismissViewControllerAnimated: YES]; 

bellekten UIViewController örneği kaldırmaz, IOS OnDestroy() eşdeğer geri arama yöntemi viewDidUnload olan() mesaj dismissViewController ilgili olarak değil burada. IOS sisteminin, sistem kaynaklara ihtiyaç duyduğunda yalnızca UIViewController örneği için belleği boşaltabileceğini düşünüyorum, ancak bunu programlı olarak yapamıyoruz.

İlgili konular