5

ऐसा लगता है कि पूरे एप्पल अनुप्रयोगों में इस्तेमाल किया जाने वाला पैटन होता है; एक नए रिकॉर्ड का निर्माण एक मोडल व्यू के माध्यम से किया जाता है जिसे जारी रखने के लिए सहेजा या रद्द करने की आवश्यकता होती है, और एक संपादन को नेविगेशन स्टैक पर धक्का देने के माध्यम से किया जाता है।क्या मुझे समान विवरण का उपयोग करना चाहिए ViewController दोनों को सामान्य रूप से और जब धक्का दिया जाता है?

मूल रूप से 'एड' और 'एडिट' के लिए मेरे व्यू कंट्रोलर को डुप्लिकेट करने का अधिकार प्रतीत नहीं होता है, लेकिन धक्का और मोडल व्यू कंट्रोलर काम करने वाली चीजों को जटिल बनाने में कई अंतर हैं।

मुझे यह कैसे करना चाहिए ताकि यह दोनों अड्डों को कवर कर सके?

-

मतभेदों में शामिल हैं।

जब स्टैक पर धक्का दिया जाता है तो navBar दृश्य के शीर्ष पर दिखाई देता है और रद्द/सहेजने वाले बटन को रखने के लिए कॉन्फ़िगर किया जा सकता है। मॉड्यूल प्रस्तुत करते समय यह मामला नहीं है ताकि इंटरफ़ेस को डुप्लिकेट किया जा सके, टूलबार को अलग से बनाया जाना चाहिए और इसके बजाए बटन को बंद/सहेजना चाहिए।

जब एक धक्का दिया दृश्य हम नेविगेशन नियंत्रक [self.navigationController popViewControllerAnimated:YES]; को एक संदेश भेज खारिज, जब एक मॉडल दृश्य खारिज हम संदेश आत्म करने के लिए भेजने के [self dismissModalViewControllerAnimated:YES];

+1

वास्तव में किस प्रकार आगे बढ़ाने के बीच "चीजें जटिल" कर रहे हैं और मोडल पेश करते हैं? –

+0

अधिक जानकारी के साथ संपादित प्रश्न – trapper

+3

मैं प्रोटोकॉल (ट्रैपर व्यूडिस्मिसर) को परिभाषित करके उस दृष्टिकोण से संपर्क करता हूं जिसने व्यू कंट्रोलर को संकेत दिया कि यह खारिज होने के लिए तैयार था। फिर, ट्रैपर व्यूडिस्मिसर के अनुरूप और स्वयं को प्रतिनिधि सेट करें। यह कक्षा में मतभेदों को आगे बढ़ाता है जो वीसी प्रदर्शित करता है (जो पहले से ही अंतर को जानता है)। – Thompsonian

उत्तर

0

आप InterfaceBuilder में UIToolbar जोड़ सकते हैं, और फिर बस इसे viewDidLoad में छिपा जब self.navigationController शून्य नहीं है। यदि आपका ViewController एक navigationcontrol का हिस्सा है shortcircuit जाएगा

- (void)didCancel { 
    [self.navigationController popViewControllerAnimated:YES] || [self dismissModalViewControllerAnimated:YES]; 
} 

यह, और नहीं तो dismissModalViewControllerAnimated का उपयोग करें:

नकारने का सवाल है, आप की तरह कुछ हो सकता था।

यह आपके रद्द बटन के लिए काम करना चाहिए। अपने को बचाने के बटन के लिए, यह उपयोगी है जैसे प्रतिनिधि विधि में किसी प्रकार का कॉल करने के लिए:

- (void)didSave { 
    // do your saving juju here 
    if([self.delegate respondsToSelector:@selector(viewController:didSave:]) { 
     [self.delegate viewController:self didSave:whatJustGotSaved]; 
    } 
    [self.navigationController popViewControllerAnimated:YES]; // noop if currently modal 
} 

प्रतिनिधि के कार्यान्वयन में फिर, आप रख सकते हैं:

- (void)viewController:(UIViewController*)viewController didSave:(NSObject*)whatJustGotSaved { 
    // do stuff with parameters 
    [self.modalViewController dismissModalViewControllerAnimated:YES]; // noop if not modal 
}