2012-10-30 19 views
5

Tüm görünümün yeniden çizilmesi mümkün mü?ios görünümünde görünümü yeniden çizme

Dil ayarlarımı tamamlamak için gerekiyor. Sorun şu ki, buradaki görüşlerin yeniden çizilmesinden sonra dil değişiyor. Ayarlardan çıkıp tekrar içeri girdiğiniz gibi, dil değişir. Ama her şeyi kurtardığın an, dil aynı kalır.

Peki, dil değişikliğinden sonra görüşlerimi nasıl en iyi şekilde yeniden çizmeliyim? ARC olarak

+1

GörünümünüzdeController [self.view setNeedsDisplay: YES]; –

+0

Sadece merak ediyorum - neden iOS tarafından standart "otomatik" dil seçimini kullanmıyorsunuz? Kişisel olarak, iOS uygulamalarında dil seçiminin bir acı olduğunu ve genellikle "umrumda değil" programlama stilinin açık bir işareti olduğunu düşünüyorum. – Eiko

+0

Ve standart "otomatik" dil seçimi nedir. İnternet'teki örneklerden birine dayanarak dil seçimimi gerçekleştirdim. – Datenshi

cevap

11

: Bu işe yapamıyorsanız

- (void)setLanguage:(LanguageType)languageType 
{ 
    _language = languageType; 

    //TODO:your settings 

    [_theWholeView setNeedsDisplay]; 
} 

, çok zahmetli bir çözüm yoktur, bütün görünümünü yeniden yükleyebilirsiniz.

Aşağıdaki gibi kodlayabilirsiniz: view.h dosyasında bir temsilci oluşturmanız gerekir. @protocol WholeViewDelegate

- (void)reloadData; 

@end sen Controller.m içindeki temsilci uygulamak için gereken denetleyici olarak view.m

- (void)setLanguage:(LanguageType)languageType 
{ 
    _language = languageType; 

    //TODO:your settings 

    [_delegate reloadData]; 
} 

yılında

- (void)reloadData 
{ 
    if(_wholeView) 
    { 
     [_wholeView removeFromSuperview]; 
    } 
    // in the wholeView init method you should refresh your data 
    _wholeView = [[WholeView alloc] init]; 
    self.view addSubview:_wholeView 
} 
+0

Hala bunu yapamıyorum. Aynı şekilde çalışır .. :(Tamamen [tableview reloadData] kullanılarak tamamlanmış olarak elde etmeyi başardım ancak dinamik olarak oluşturulmuş tablolarımı güncellemiyor .. Hmm tüm uygulama görünümünü nasıl seçiyorsunuz? – Datenshi

+0

@Datenshi Yanıtı güncelledim, bir göz atabilirsin – cloosen

6

Evet. [UIView setNeedsDisplay] (reference) numaralı telefonu arayın.

+0

Gözden geçirme beklemede ve görünümün yeniden çizilmesini söylemek istiyorsan, ihtiyacın olan şey bu olduğunu düşünüyorum. Benim için çalıştın, teşekkürler! – SimplGy

1

Sadece setNeedsDisplay çağrısı. Sorunu çözecektir. setNeedsDisplay, görünüm çerçevesini dikdörtgen parametre olarak geçirerek UIView sınıfındaki drawRect işlevini çağırır. Umarım, bu bakış açısına yardımcı olur ....

+1

Üzgünüm, bu yok Eğer bir düğme veya etiket yeniden adlandırmak için çalışıyorsanız bu yöntemi kullanarak hücrenin başlıkları yeniden çizilmiyor – Datenshi

+0

Eğer metin veya başlık başka bir dize değiştirmek için değiştirebilirseniz etiket için "myLabel.text = @" Mytext "; – m4n1c

+0

Evet, ben de biliyorum. Mutablearray içinde saklanan değerlerin bulunduğu tablo görünümünü güncellemeye çalışıyorum. Arrayımı tekrar tekrar başlatmadan yeni değerler almak için Array'a ihtiyacım var, dizideki nesneler LocalizedStri ngs, böylece kullanıcı hangi localizedstrings tablo görünümünde kullanacağını değiştirebilir. – Datenshi

İlgili konular