Explorar o código

Merge pull request #107 from nin9tyfour/master

*Added the ability to determine a UIView's view controller without selection the view controller's view delegate.
Ryan Olson %!s(int64=10) %!d(string=hai) anos
pai
achega
ac8940da26

+ 16 - 1
Classes/ObjectExplorers/FLEXViewExplorerViewController.m

@@ -15,7 +15,8 @@
 
 
 typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
 typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
     FLEXViewExplorerRowViewController,
     FLEXViewExplorerRowViewController,
-    FLEXViewExplorerRowPreview
+    FLEXViewExplorerRowPreview,
+    FLEXViewExplorerRowViewControllerForAncestor
 };
 };
 
 
 @interface FLEXViewExplorerViewController ()
 @interface FLEXViewExplorerViewController ()
@@ -46,6 +47,8 @@ typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
     
     
     if ([FLEXUtility viewControllerForView:self.viewToExplore]) {
     if ([FLEXUtility viewControllerForView:self.viewToExplore]) {
         [rowCookies addObject:@(FLEXViewExplorerRowViewController)];
         [rowCookies addObject:@(FLEXViewExplorerRowViewController)];
+    }else{
+        [rowCookies addObject:@(FLEXViewExplorerRowViewControllerForAncestor)];
     }
     }
     
     
     [rowCookies addObject:@(FLEXViewExplorerRowPreview)];
     [rowCookies addObject:@(FLEXViewExplorerRowPreview)];
@@ -79,6 +82,10 @@ typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
             case FLEXViewExplorerRowPreview:
             case FLEXViewExplorerRowPreview:
                 title = @"Preview Image";
                 title = @"Preview Image";
                 break;
                 break;
+            
+            case FLEXViewExplorerRowViewControllerForAncestor:
+                title = @"View Controller For Ancestor";
+                break;
         }
         }
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
         objc_property_t property = [self viewPropertyForName:rowCookie];
         objc_property_t property = [self viewPropertyForName:rowCookie];
@@ -105,6 +112,10 @@ typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
                 
                 
             case FLEXViewExplorerRowPreview:
             case FLEXViewExplorerRowPreview:
                 break;
                 break;
+            
+            case FLEXViewExplorerRowViewControllerForAncestor:
+                subtitle = [FLEXRuntimeUtility descriptionForIvarOrPropertyValue:[FLEXUtility viewControllerForAncestralView:self.viewToExplore]];
+                break;
         }
         }
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
         objc_property_t property = [self viewPropertyForName:rowCookie];
         objc_property_t property = [self viewPropertyForName:rowCookie];
@@ -141,6 +152,10 @@ typedef NS_ENUM(NSUInteger, FLEXViewExplorerRow) {
             case FLEXViewExplorerRowPreview:
             case FLEXViewExplorerRowPreview:
                 drillInViewController = [[self class] imagePreviewViewControllerForView:self.viewToExplore];
                 drillInViewController = [[self class] imagePreviewViewControllerForView:self.viewToExplore];
                 break;
                 break;
+                
+            case FLEXViewExplorerRowViewControllerForAncestor:
+                drillInViewController = [FLEXObjectExplorerFactory explorerViewControllerForObject:[FLEXUtility viewControllerForAncestralView:self.viewToExplore]];
+                break;
         }
         }
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
     } else if ([rowCookie isKindOfClass:[NSString class]]) {
         objc_property_t property = [self viewPropertyForName:rowCookie];
         objc_property_t property = [self viewPropertyForName:rowCookie];

+ 1 - 0
Classes/Utility/FLEXUtility.h

@@ -18,6 +18,7 @@
 + (NSString *)descriptionForView:(UIView *)view includingFrame:(BOOL)includeFrame;
 + (NSString *)descriptionForView:(UIView *)view includingFrame:(BOOL)includeFrame;
 + (NSString *)stringForCGRect:(CGRect)rect;
 + (NSString *)stringForCGRect:(CGRect)rect;
 + (UIViewController *)viewControllerForView:(UIView *)view;
 + (UIViewController *)viewControllerForView:(UIView *)view;
++ (UIViewController *)viewControllerForAncestralView:(UIView *)view;
 + (NSString *)detailDescriptionForView:(UIView *)view;
 + (NSString *)detailDescriptionForView:(UIView *)view;
 + (UIImage *)circularImageWithColor:(UIColor *)color radius:(CGFloat)radius;
 + (UIImage *)circularImageWithColor:(UIColor *)color radius:(CGFloat)radius;
 + (UIColor *)scrollViewGrayColor;
 + (UIColor *)scrollViewGrayColor;

+ 12 - 0
Classes/Utility/FLEXUtility.m

@@ -58,6 +58,18 @@
     return viewController;
     return viewController;
 }
 }
 
 
++ (UIViewController *)viewControllerForAncestralView:(UIView *)view{
+    UIViewController *viewController = nil;
+    SEL viewDelSel = NSSelectorFromString([NSString stringWithFormat:@"%@ewControllerForAncestor", @"_vi"]);
+    if ([view respondsToSelector:viewDelSel]) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+        viewController = [view performSelector:viewDelSel];
+#pragma clang diagnostic pop
+    }
+    return viewController;
+}
+
 + (NSString *)detailDescriptionForView:(UIView *)view
 + (NSString *)detailDescriptionForView:(UIView *)view
 {
 {
     return [NSString stringWithFormat:@"frame %@", [self stringForCGRect:view.frame]];
     return [NSString stringWithFormat:@"frame %@", [self stringForCGRect:view.frame]];