2013-05-22 24 views
58

, biz ana işlevi böyle bir uygulama temsilci kullanarak yeni bir uygulama oluşturur görebilirsiniz: Biz MyAppDelegate.h bakarsak AncakXCode ana hikaye panosunu nasıl yükler? Ben film şeridi kullanarak XCode 4.6 yeni tek görünüm uygulama oluşturduğunuzda

return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class])); 

ve MyAppDelegate.m, kodda MainStoryboard.storyboard'u gösteren hiçbir yer yoktur. Bu, nib dosyasını programsal olarak yükleyen kod satırını bulabileceğimiz bir storyboard olmayan sürümden farklıdır.

Benim sorum şu ki, hikaye panosu nasıl yüklenir? (Nerede bulacağını kurcalamak gerekir?)

Teşekkür

cevap

69

bak kullanarak .nib benzer kodda yapabilirsiniz.

Eğer bunu kod içinde kendiniz yapmak isterseniz, bunun gibi bir şey yaparsınız.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]]; 
    UIViewController *vc = [storyboard instantiateInitialViewController]; 

    // Set root view controller and make windows visible 
    self.window.rootViewController = vc; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

Teşekkürler! Bu benim sorumu cevaplandırıyor – agro1986

+0

Eğer hoş geldiniz, eğer soruyu kapatmak için kabul edilmiş olarak işaretlemelisiniz. –

+0

Bitti! Nasıl yapılacağını bilmiyordum :) – agro1986

7

Bu sizin Info.plist dosyadan ayarı UIMainStoryboardFile den başlatılır. Xcode daha sonra bir ana pencere oluşturur, ilk görüntü denetleyicinizi başlatır ve pencereye ekler. Hala

enter image description here

Bildirim Ana Storyboard ayarı Project

için Hedef ayarlarında

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController* initialView = [storyboard instantiateInitialViewController]; 
+0

teşekkürler kodu için bir sürü! – agro1986

9

UIApplicationMain tartışmaya bir göz ver: Bu fonksiyon asıl sınıfından uygulama nesnesini başlatır ve verilen sınıfın ve kümelerinden (varsa) temsilci başlatır

Tartışma uygulama için delege. Ayrıca, uygulamanın çalışma döngüsü de dahil olmak üzere ana olay döngüsünü ayarlar ve olayları işlemeye başlar. Uygulamanın Info.plist dosyası, yüklenecek ana nib dosyasını belirtirse, NSMainNibFile anahtarını ve değer için geçerli bir nib dosya adını ekleyerek bu işlev, bu nib dosyasını yükler. UIApplicationMain çağrılır

, tüm uygulama bilgilerini içeren bir Plist dosyası yüklenir:

o xib/film şeridi dosya yüklenebilmesi için ihtiyaç duyduğu "anlar" nasıl

enter image description here

.

+0

'a eklemelisiniz. Çok teşekkür ederim! – agro1986

3

Eğer

var storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
var vc : AnyObject! = storyboard.instantiateInitialViewController() 
self.window!.rootViewController = vc as UIViewController 
self.window!.makeKeyAndVisible() 
+3

Film şeridini "AppDelegate" uygulamasındaki 'applicationDidFinishLoading 'yönteminde başlatmak isterseniz,' window' nesnesini de oluşturmanız gerekir. Örneğin bu gibi window = UIWindow (çerçeve: UIScreen.mainScreen(). Sınır) ' –

+0

kullanmalısınız yerine var ve kullanın? yerine ! (emin olduğunda bile), bunun için gerçek bir ceza yoktur. –

0

biraz geç kaldın partiye Swift ile örneğini istiyor ancak Xcode

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

     var viewController = window?.rootViewController as? ViewController 
     if let viewController = viewController { 
      // do awesome stuff 
     } 

     return true 
    } 
} 
2

, insanlar tarafından okunabilir aşağıda gösterildiği gibi pencereden viewController ulaşabilirsek Bilgi.Ana film şeridi belirleyen Plist bölümdür: düz metin olarak

Main storyboard file base name

, anahtar UIMainStoryboardFile geçerli:

<key>UIMainStoryboardFile</key> 
<string>Main</string> 
İlgili konular