2012-06-26 14 views
5

Bazılarınız için bu soru saçma gelebilir ancak takım arkadaşlarımla bir ios uygulamasının tasarımı hakkında görüşüyorum ve bunun hakkında fikrinize ihtiyacım var. Biz Düğmesi içeren ViewControllerA varİki görüş arasındaki itme döngüsünden kaçmamalı mıyız?

  • şöyle ben katılmıyorum

    eski tasarım "B Git" dir. düğmesi B. gitmek için PUSH segue sahiptir

  • Biz 2 ViewController a arasındaki seyahat etmek zorunda A.
  • gitmek için bir PUSH segue sahiptir hayranlarıyla renkli "A Git" düğmesi içeren ViewControllerB var çok. Gördüğünüz gibi

, ViewController A ve B arasında bir segue döngü var ve biz o olur asla izin gerektiğini düşünüyorum. Navigasyon çubuğunda "Geri" tuşu ile B'den A'ya gitmeyi tercih ederim.

PUSH tasarımında ne kadar ciddi bir döngü var? Bazı durumlarda kabul edilebilir mi? Ben elma tarafından tavsiye iyi tasarım nerede bulabiliriz

DÜZENLEME (orada herhangi olur?): Nfarshchi tarafından Denemek "pop itme önce" çözüm ama öyle değil work.This yapmak yaptım nasıl: 1) VC A'dan VC B'ye segue oluşturamıyorum ve VC B'den VC A'ya aynı anda selamlıyorum. Hikaye panosunun olmasını engellediği anlaşılıyor. 2) VC A'dan VC B'ye ve "Button'dan" gotoA "olan bir segue olan" Go to B "düğmesinden tanımlayıcısı" gotoB "olan bir segue yaratıyorum. "VC A'ya VC B'de

Yani Storyboard olur şuna benzer:

VC X --- itin ---> VC A < ---- itin ----> VC B VC AI ise) 3 (ı ViewController X ihtiyaç nedeni sonradan açıklanmıştır) bu var:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"Prepage for segue go to B") ; 
    if ([[segue identifier] isEqualToString:@"gotoB"]) { 
     [self.navigationController popViewControllerAnimated:NO]; 

    } 
} 

Ben VC X gerektiğinden yapamam Orada bir ViewController varsa, bir ViewController yığınından pop.

Şimdi doğru görünüyor, ancak "B'ye git" seçeneğini tıkladığımda, bunun yerine VC X'e gitti. Açıkçası, yukarıdaki popViewControllerAnimated: VC A'yı açtı ve hepsi bu, VC B'nin artık işten atılmadığıydı. Sonuç, VC B'nin beklendiği gibi Stack'a itilmemesiydi.

Böylece ben nfarshchi çözümü uygulamak olanaksız olduğunu düşünüyorum

cevap

3

Bir UIViewController dışarı itmek ve tekrar tasarımı yeniden yöntemlerden çok arayacak sende itin zaman bunu ancak düşünebilirsiniz. Üstüne geçmek istiyorsanız, UINavigationController'u kullanmak daha iyidir. Bu durumda sadece onları bir kez yaparsınız ve aralarında kolayca gezinebilirsiniz. bu daha az sistem kaynağı kullanacaktır

+0

Teşekkürler. Ama ben "itme öncesi pop" hakkında çözümün işe yaramayacağını düşünüyorum. – grandagile

+1

Hiçbir erkek, sen itmeden önce pop demek istemedim, 'UINavigationController' kullanarak söylüyorum 'UIViewController' sadece bir kez itmek ve aynı zamanda basit bir geri düğmesi var. ve tekrar pop yapmaya gerek yok. 'UINavigationController' bunu sizin için yapacak. – nfarshchi

+0

"ViewControllerA" ve "ViewControllerB" öğeleriniz olduğunu düşünün. 'a' bir Düğme ve [self.navigationController pushViewController: viewControllerB animasyonlu olabilir: EVET]; – nfarshchi

1

Yalnızca geçişin oluşturduğu sanal 2D alanı gerçekçi olduğunda itme/pop geçişi kullanılmalıdır. Kullanıcı üst üste 10 itme geçişi görürse, bir hiyerarşiye daha derin ve daha derine giriyormuş gibi hissedecek ve özellikle gerçekte iki görüntü denetleyicisi arasında hareket ediyorsanız, kafa karışıklığına ve kötü bir zihinsel modele yol açabilir.

Geri düğmesini kullanmak daha iyi bir çözüm olabilir ya da kullanıcılara neler olup bittiğini daha net bir şekilde açıklayan kendi özel geçişinizi yapabilirsiniz. Belki de bir ters geçiş de uygun olacaktır.

İlgili konular