Просмотр исходного кода

Add convenience method for getting the view controller from its view.

Ryan Olson лет назад: 12
Родитель
Сommit
d1527b6884
2 измененных файлов с 15 добавлено и 12 удалено
  1. 1 0
      Classes/Utility/FLEXUtility.h
  2. 14 12
      Classes/Utility/FLEXUtility.m

+ 1 - 0
Classes/Utility/FLEXUtility.h

@@ -13,6 +13,7 @@
 
 + (UIColor *)consistentRandomColorForObject:(id)object;
 + (NSString *)descriptionForView:(UIView *)view includingFrame:(BOOL)includeFrame;
++ (UIViewController *)viewControllerForView:(UIView *)view;
 + (NSString *)detailDescriptionForView:(UIView *)view;
 + (UIImage *)circularImageWithColor:(UIColor *)color radius:(CGFloat)radius;
 + (UIColor *)scrollViewGrayColor;

+ 14 - 12
Classes/Utility/FLEXUtility.m

@@ -21,18 +21,7 @@
 {
     NSString *description = [[view class] description];
     
-    NSString *viewControllerDescription = nil;
-    SEL viewDelSel = NSSelectorFromString([NSString stringWithFormat:@"%@ewDelegate", @"_vi"]);
-    if ([view respondsToSelector:viewDelSel]) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
-        id viewDel = [view performSelector:viewDelSel];
-#pragma clang diagnostic pop
-        if (viewDel) {
-            viewControllerDescription = [[viewDel class] description];
-        }
-    }
-    
+    NSString *viewControllerDescription = [[[self viewControllerForView:view] class] description];
     if ([viewControllerDescription length] > 0) {
         description = [description stringByAppendingFormat:@" (%@)", viewControllerDescription];
     }
@@ -48,6 +37,19 @@
     return description;
 }
 
++ (UIViewController *)viewControllerForView:(UIView *)view
+{
+    UIViewController *viewController = nil;
+    SEL viewDelSel = NSSelectorFromString([NSString stringWithFormat:@"%@ewDelegate", @"_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
 {
     return [NSString stringWithFormat:@"frame = %@", NSStringFromCGRect(view.frame)];