2013-07-18 16 views
11

Mevcut yüklü film şeridinin ne olduğunu bilmek istiyorum, aşağıdaki kodu kullandım ama hala ana hikaye tahtasını geçerli değil.Geçerli film şeridi adını nasıl öğrenebilirim?

//This get me the Main storyboard 
[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"]; 

cevap

11

şeridine aracılığıyla en basit yolu instantied veya segues bir UIViewController sınıfında çalışıyorsanız geçerli:

Bir UIViewController

olan bir UIView sınıfta ise
UIStoryboard *storyBoard = self.storyboard; 

UIResponder *responder = self; 
while (![responder isKindOfClass:[UIViewController class]]) { 
    responder = [responder nextResponder]; 
    if (nil == responder) { 
     break; 
    } 
} 
UIViewController *viewController = (UIViewController *) responder; 
UIStoryboard *storyBoard = viewController.storyboard; 
+7

i adını almak nasıl? ? – wod

-2

Sadece bunu, bu sorgu çözebilir

NSString *storyboardName; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    storyboardName = @"iPad"; 
} else { 
    storyboardName = @"iPhone"; 
} 
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:storyboardName bundle:nil]; 
+0

sorusu anlamıyor olabilirsiniz, adını bilmek istiyorum storyboard adının ayarlanmadı – wod

+0

Bu bağlantıyı incelediniz mi: http://stackoverflow.com/questions/14928817/identify-which-storyboard-is aktif –

28

Bina yukarıda Durican cevabı üzerine: bir görünüm denetleyicisi içinde

:

UIStoryboard * storyboard = self.storyboard; 
NSString * storyboardName = [storyboard valueForKey:@"name"]; 

(ismi ".storyboard" dosya adı uzantısını içermez.)

+0

Mükemmel çözüm. Teşekkürler. – VaporwareWolf

+0

Soru. Bununla nasıl başardın? Belgeler isim özelliği hakkında bir şey söylemiyor. Ben de tüm anahtarları sorgulamanın bir yolunu görmüyorum. IB etiketlerinden bir bıçak mı aldın? – VaporwareWolf

+0

Sadece tam bir tahminde bulundum, test ettim ve haklı çıktım. :) – Xiphias

İlgili konular