2010-03-21 24 views
6

यहाँ मेरी कोड है।presentModalViewController काम नहीं कर रहा

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil]; 
//[self.navigationController presentModalViewController:vc animated:YES]; 
[self setView:[vc view]]; 

दृश्य ठीक प्रतीत होता है (संक्रमण के बिना, निश्चित रूप से): हालांकि, अगर मैं यह करने के लिए बदल जाते हैं। मैं क्या गलत कर रहा हूँ? क्या दृश्य विशेष नियंत्रक को प्रारंभ करते समय आपको कुछ विशेष देखभाल करना है? मैंने ऐप्पल के उदाहरणों से जितना संभव हो उतना प्रतिलिपि बनाने की कोशिश की, लेकिन मैं इसे काम करने के लिए नहीं मिल सकता ...

किसी भी इनपुट के लिए धन्यवाद!

- Ry

उत्तर

24

आप कर सकते हैं नियंत्रकों (आमतौर पर एक UINavigationController या UITabBarController के माध्यम से) कि पहले से ही परदे पर दिखाया गया है से ही मौजूद मोडल दृश्य नियंत्रकों। एक UINavigationController बनाने का प्रयास करें, इसे देखने के लिए नियंत्रक को दबाएं, और फिर अपना मोडल नियंत्रक प्रस्तुत करना। एक्सकोड में एक स्टार्टर प्रोजेक्ट है जो दिखाता है कि यदि आप इससे अपरिचित हैं तो UINavigationController- आधारित प्रवाह कैसे बनाएं।

ध्यान देने योग्य एक और बात: यदि आपने व्यू कंट्रोलर को UINavigationController पर धक्का नहीं दिया है, तो navigationController प्रॉपर्टी शून्य होगी, और मैसेजिंग का कोई प्रभाव नहीं पड़ेगा।

+0

भावहीन। क्या ऐसा करने का कोई आसान तरीका नहीं है? मैं वास्तव में एक दृश्य स्लाइड करने में सक्षम होने के लिए एक UINavigationController बनाना नहीं चाहता ... आपके उत्तर के लिए धन्यवाद, यद्यपि! – ryyst

+0

आपको ऐसा करने के लिए एक नौसेना नियंत्रक बनाने की आवश्यकता नहीं है, लेकिन आप इसे यहां संदर्भित कर रहे हैं। यदि केवल एक व्यू कंट्रोलर है, तो आप केवल एक मोडल व्यू कंट्रोलर प्रस्तुत करने के लिए आईटी का उपयोग कर सकते हैं (यानी, यदि आपका कोड उदाहरण ऊपर है तो ".navigationController" से छुटकारा पाएं। आपको इसे देखने के लिए अपनी मुख्य विंडो में अपना व्यू कंट्रोलर का दृश्य जोड़ना होगा काम। –

+4

+1 ने अभी अपना जीवन बचाया है:: ' –

1

मैं एक और मॉडल दृश्य में एक मॉडल दृश्य दिखाने के लिए प्रयास करते समय एक ही समस्या का सामना करना पड़ा। बेन जवाब सही है, और इसलिए की तरह लागू किया जा सकता:

@interface FirstView: UIViewController { 

    UIViewController *firstView; 
} 

- (IBAction)showOptionsView:(id)sender; 

@end 

मुख्य दृश्य कक्षा में:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    firstView = [[UIViewController alloc]init]; 
    [firstView setView:self.view]; 
    [firstView setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
} 

- (IBAction)showOptionsView:(id)sender { 
    OptionsView *optView = [[OptionsView alloc]initWithNibName:@"OptionsView" bundle:nil]; 

    if(firstView != nil) { 
     [firstView presentModalViewController:optView animated:YES]; 
     [optView release]; 
} 
संबंधित मुद्दे