SORU
11 Mart 2011, Cuma


Neden viewWillAppear bir uygulama arka plandan geri geldiğinde adlı değil mi?

Bir uygulama yazıyorum ve eğer kullanıcı telefonda konuşurken app bakıyor eğer görünümünü değiştirmek için ihtiyacım var.

Aşağıdaki yöntem uygulanır:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"viewWillAppear:");
    _sv.frame = CGRectMake(0.0, 0.0, 320.0, self.view.bounds.size.height);
}

Ama uygulama ön plana döndüğünde diyorlar.

Uygulamak biliyorum:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarFrameChanged:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];

ama bunu yapmak istemiyorum. Çok viewWillAppear tüm tasarım bilgilerimi koydum: yöntem, tüm olası senaryoları ele alalım.

Hatta viewWillAppear aramaya çalıştım: applicationWillEnterForeground: ama bu durumda Geçerli Görünüm denetleyicisi tespit edemiyorum.

Herkes bu ile başa çıkmak için doğru yolu biliyor mu? Bariz bir çözüm kaçırıyorum eminim.

CEVAP
11 Mart 2011, Cuma


Yöntemi viewWillAppear alınmalıdır bağlamında neler oluyor kendi uygulama ve bağlamında uygulama olmaktan yerleştirilen ön plana ne zaman geçiş yapmak için başka bir uygulama.

Diğer bir deyişle, eğer birisi bakıyor başka bir uygulama ya da bir telefon görüşmesi, sonra da anahtarları geri uygulamanız hangisi daha önce backgrounded, UİViewController olan oldu zaten görünür ne zaman bıraktın uygulaması 'fark etmez' tabiri caizse -- kadarıyla ilgili olarak, hiçbir zaman ortadan kayboldu ve hala görünür. -- viewWillAppear değil denir.

Yıkmak biliyorsun, değil mi belirli bir anlamı vardır viewWillAppear kendini ... ... karşı arama öneriyorum! Aynı etkiyi elde etmek için yapabileceğiniz bir yeniden düzenleme aşağıdaki gibi olabilir

- (void)viewWillAppear:(BOOL)animated {
    [self doMyLayoutStuff:self];
}

- (void)doMyLayoutStuff:(id)sender {
    // stuff
}

Ayrıca uygun bildirim doMyLayoutStuff tetik:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doMyLayoutStuff:) name:UIApplicationDidChangeStatusBarFrameNotification object:self];

Kutu yoldan hayır 'geçerli' bu arada UİViewController. olan bir şey yok Ama bir UİViewController orada sunulduğunda bulmak için UİNavigationController bu etrafında yollar, örneğin temsilci yöntem vardır bulabilirsiniz. Sunulmuş olan en son UİViewController izlemek gibi bir şey kullanabilirsin.

Güncelleme

Eğer düzeni dışarı KBS ile uygun autoresizing maskeleri üzerinde çeşitli bit, bazen yok bile gerek anlaşma ile 'manuel' dışarı atarak sizin UI - sadece ele alır

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • makemebad35

    makemebad35

    17 NİSAN 2006
  • RFS Dan

    RFS Dan

    22 Temmuz 2014