2011-11-13 26 views
6

Programlı olarak oluşturulmuş bir sekme çubuğum var ve bir görünümle ilişkili bir hikaye panosunu başlatırken zorluk yaşıyorum.Film şeridi görüntü denetleyicileriyle programatik bir sekme çubuğu oluşturma?

Görüntüyü sekme çubuğunda film şeridi olmadan başarılı bir şekilde yükleyebildiğim (aşağıdaki kod), ancak görünüm kısmen yalnızca UI bileşenlerinin bazılarının film şeridinde bulunduğundan dolayı gösteriliyor.

Hikaye tahtasının adı MainStoryboard'dur ve storyboard görünümü tanımlayıcısını SettingsViewController olarak ayarlıyorum.

Aşağıdaki kodda, StoryView için storyboard'umu nasıl ilklendirebilirim?

- (void)createTabBarItems { 
    tabBarController = [[UITabBarController alloc] init]; 

    settingsViewController = [[SettingsViewController alloc] init]; 


    UINavigationController *sett = [[[UINavigationController alloc] 
            initWithRootViewController: settingsViewController] autorelease]; 

    [sett.tabBarItem setTitle:@"Settings"]; 
    [sett.tabBarItem setImage:[UIImage imageNamed:@"settings.png"]]; 

    [tabBarController setViewControllers: 
     [NSArray arrayWithObjects:sett, sett, sett, sett, nil]]; 
} 

cevap

16

Eğer doğrudan görünüm denetleyicisi tahsis yerine film şeridi yöntemlerini kullanmak zorunda Film şeridinde olarak görünümü denetleyicisi başlatmak isterseniz:

// load the storyboard by name 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

// either one of the two, depending on if your view controller is the initial one 
settingsViewController = [storyboard instantiateInitialViewController]; 
settingsViewController = [storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 
+0

ben kodunun ilk satırında bir hata aldı "Seçici için bilinen sınıf yöntemi yok" storyBoardWithName: '". Bu yüzden kodunuzun ilk satırına "bundle: nil" ekledim. Şimdi hatayı alıyorum: "Bir navigasyon denetleyicisine basmak desteklenmiyor" Hatayı düzeltmek için ne yapabilirim ve "bundle: nil" ekleyerek doğru şeyi yaptım mı? – kevin

+0

Şuanda çalışıyor ... Kodun bir kısmı karışıktı. Teşekkür ederim! – kevin

+0

Teşekkürler, paket parametresi gerçekten eksikti, bunu düzelttim. 'bundle: nil' gayet iyi çünkü bu, ana pakette arama yapacak. –

0

Swift 4

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
settingsViewController = storyboard.instantiateInitialViewController() 
settingsViewController = storyboard.instantiateViewController(withIdentifier: "SettingsViewController") 
İlgili konular