जैसा कि यहां कई लोग सुझाव देते हैं, कि "जाँच" विधियाँ सभी मामलों के लिए अच्छी तरह से काम नहीं करती हैं, मेरी परियोजना में मैं स्वयं उस प्रबंधन के समाधान के साथ आया हूं। मुद्दा यह है, हम आमतौर पर अपने दम पर प्रस्तुति का प्रबंधन करते हैं - यह वह नहीं है जो दृश्य के पीछे होता है और हमें आत्मनिरीक्षण करना होगा।
DEViewController.h
फ़ाइल:
#import <UIKit/UIKit.h>
// it is a base class for all view controllers within a project
@interface DEViewController : UIViewController
// specify a way viewcontroller, is presented by another viewcontroller
// the presented view controller should manually assign the value to it
typedef NS_ENUM(NSUInteger, SSViewControllerPresentationMethod) {
SSViewControllerPresentationMethodUnspecified = 0,
SSViewControllerPresentationMethodPush,
SSViewControllerPresentationMethodModal,
};
@property (nonatomic) SSViewControllerPresentationMethod viewControllerPresentationMethod;
// other properties/methods...
@end
प्रस्तुतियाँ अब इस तरह से प्रबंधित की जा सकती हैं:
नेविगेशन स्टैक पर धकेल दिया गया:
// DETestViewController inherits from DEViewController
DETestViewController *vc = [DETestViewController new];
vc.viewControllerPresentationMethod = SSViewControllerPresentationMethodPush;
[self.navigationController pushViewController:vc animated:YES];
नेविगेशन के साथ औपचारिक रूप से प्रस्तुत:
DETestViewController *vc = [DETestViewController new];
vc.viewControllerPresentationMethod = SSViewControllerPresentationMethodModal;
UINavigationController *nav = [[UINavigationController alloc]
initWithRootViewController:vc];
[self presentViewController:nav animated:YES completion:nil];
सामान्य रूप से प्रस्तुत:
DETestViewController *vc = [DETestViewController new];
vc.viewControllerPresentationMethod = SSViewControllerPresentationMethodModal;
[self presentViewController:vc animated:YES completion:nil];
इसके अलावा, DEViewController
यदि उपरोक्त संपत्ति के बराबर है तो हम "चेकिंग" में एक वापसी जोड़ सकते हैं SSViewControllerPresentationMethodUnspecified
:
- (BOOL)isViewControllerPushed
{
if (self.viewControllerPresentationMethod != SSViewControllerPresentationMethodUnspecified) {
return (BOOL)(self.viewControllerPresentationMethod == SSViewControllerPresentationMethodPush);
}
else {
// fallback to default determination method
return (BOOL)self.navigationController.viewControllers.count > 1;
}
}