2013-03-04 5 views
22

मेरे पास स्टोरीबोर्ड वाला ऐप है। मैं चुने गए आइटम के आधार पर टेबल व्यू से चुनने के लिए सेग के साथ कई व्यू कंट्रोलर का उपयोग कर रहा हूं। मैं एक पृष्ठ दृश्य नियंत्रक रखना चाहता हूं जिसमें पेज स्टोरीबोर्ड से एक या अधिक दृश्य नियंत्रक होंगे, यहां तक ​​कि उन्हें दोहराना भी। मैं init पेज व्यू कंट्रोलर की तरह कोशिश कर रहा हूं: .... self.dataSource = self;पृष्ठ दृश्य नियंत्रक में प्रोग्रामबोर्ड से स्टोरीबोर्ड से व्यू कंट्रोलर का उपयोग करना

UIViewController *initialViewController =[self viewControllerAtIndex:current]; 
NSArray *viewControllers = [NSArray arrayWithObject:initialViewController]; 


[self setViewControllers:viewControllers direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil]; 
.... 

- (UIViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
if ((descriptions.count == 0) || 
    (index >= descriptions.count)) { 
    return nil; 
} 

current=index; 

// Create a new view controller and pass suitable data. 
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 

Description *description=[DBCompany getDescriptionById:language descriptionId:[[descriptions objectAtIndex:index] integerValue]]; 

UIViewController *viewController=nil; 
if(description.frame==100){ 
    viewController=[[Company100ViewController alloc] init]; 
    ((Company100ViewController*)viewController).companyId = companyId; 
} 
return viewController; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
if ((descriptions.count == 0) || 
    (current-1 < 0)) { 
    return nil; 
} 

return [self viewControllerAtIndex:current-1]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
if ((descriptions.count == 0) || 
    (current >= descriptions.count)) { 
    return nil; 
} 

return [self viewControllerAtIndex:current+1]; 
} 

हालांकि viewcontroller काला में दिखाई देता है। मुझे लगता है क्योंकि मैं UIviewcontroller कक्षा जोड़ रहा हूं लेकिन स्टोरीबोर्ड के साथ अपने मामले में इसे किसी भी दृश्य, एक्सआईबी से कनेक्ट नहीं कर रहा हूं।

मैं पृष्ठ दृश्य नियंत्रक में प्रोग्रामिंग के लिए प्रोग्रामबोर्ड से अलग दृश्य नियंत्रक का उपयोग कैसे कर सकता हूं?

उत्तर

53

यदि आप viewController = [[Company100ViewController alloc] init] करते हैं तो हाँ यह स्टोरीबोर्ड या XIB से जुड़ा नियंत्रक नहीं है। एक XIB साथ नियंत्रक लोड करने के लिए आप निम्न क्या करना है:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
Company100ViewController * vc = (Company100ViewController *)[sb instantiateViewControllerWithIdentifier:@"vc-identifier"]; 

स्टोरीबोर्ड में आप VC-पहचानकर्ता के दृश्य नियंत्रक के आईडी सेट सुनिश्चित करें; जो भी पहचानकर्ता आप चुनते हैं।

+0

धन्यवाद। यह काम करता है। –

+11

नोट: यदि आपका UIPageViewController आपके पृष्ठ UIViewControllers के समान स्टोरीबोर्ड में है, तो आप बस UIStoryboard * sb = [UIStoryboard के बजाय self.storyboard का उपयोग कर सकते हैं ... –

3

स्विफ्ट 3

let sb = UIStoryboard(name: "MainStoryboard", bundle: nil) 
let vc = sb.instantiateViewController(withIdentifier: "vc-identifier") 
0

स्विफ्ट

मामले में है कि आप UIViewController वस्तु से init करना चाहते हैं।

guard let vc = storyboard?.instantiateViewController(withIdentifier: "nameVC") else { 
    return 
} 

// add to current view 
view.addSubview(vc.view) 
संबंधित मुद्दे

 संबंधित मुद्दे