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

Add convenience init to some view controllers

Clean up libraries view controller
Tanner Bennett лет назад: 6
Родитель
Сommit
52eed1b6f9

+ 1 - 1
Classes/GlobalStateExplorers/FLEXClassesTableViewController.h

@@ -11,6 +11,6 @@
 
 @interface FLEXClassesTableViewController : FLEXTableViewController <FLEXGlobalsEntry>
 
-@property (nonatomic, copy) NSString *binaryImageName;
++ (instancetype)binaryImageName:(NSString *)binaryImageName;
 
 @end

+ 35 - 21
Classes/GlobalStateExplorers/FLEXClassesTableViewController.m

@@ -14,33 +14,56 @@
 
 @interface FLEXClassesTableViewController ()
 
-@property (nonatomic) NSArray<NSString *> *classNames;
-@property (nonatomic) NSArray<NSString *> *filteredClassNames;
+@property (nonatomic, copy) NSArray<NSString *> *classNames;
+@property (nonatomic, copy) NSArray<NSString *> *filteredClassNames;
+@property (nonatomic, copy) NSString *binaryImageName;
 
 @end
 
 @implementation FLEXClassesTableViewController
 
+#pragma mark - Initialization
+
++ (instancetype)binaryImageName:(NSString *)binaryImageName
+{
+    return [[self alloc] initWithBinaryImageName:binaryImageName];
+}
+
+- (id)initWithBinaryImageName:(NSString *)binaryImageName
+{
+    NSParameterAssert(binaryImageName);
+
+    self = [super init];
+    if (self) {
+        self.binaryImageName = binaryImageName;
+        [self loadClassNames];
+    }
+
+    return self;
+}
+
+
+#pragma mark - Internal
+
 - (void)viewDidLoad
 {
     [super viewDidLoad];
     
     self.showsSearchBar = YES;
+    [self updateTitle];
 }
 
-- (void)setBinaryImageName:(NSString *)binaryImageName
+- (void)updateTitle
 {
-    if (![_binaryImageName isEqual:binaryImageName]) {
-        _binaryImageName = binaryImageName;
-        [self loadClassNames];
-        [self updateTitle];
-    }
+    NSString *shortImageName = self.binaryImageName.lastPathComponent;
+    self.title = [NSString stringWithFormat:@"%@ Classes (%lu)",
+        shortImageName, (unsigned long)self.filteredClassNames.count
+    ];
 }
 
 - (void)setClassNames:(NSArray<NSString *> *)classNames
 {
-    _classNames = classNames;
-    self.filteredClassNames = classNames;
+    _classNames = self.filteredClassNames = classNames.copy;
 }
 
 - (void)loadClassNames
@@ -61,12 +84,6 @@
     }
 }
 
-- (void)updateTitle
-{
-    NSString *shortImageName = self.binaryImageName.lastPathComponent;
-    self.title = [NSString stringWithFormat:@"%@ Classes (%lu)", shortImageName, (unsigned long)self.filteredClassNames.count];
-}
-
 
 #pragma mark - FLEXGlobalsEntry
 
@@ -75,10 +92,7 @@
 }
 
 + (UIViewController *)globalsEntryViewController:(FLEXGlobalsRow)row {
-    FLEXClassesTableViewController *classesViewController = [self new];
-    classesViewController.binaryImageName = [FLEXUtility applicationImageName];
-
-    return classesViewController;
+    return [self binaryImageName:[FLEXUtility applicationImageName]];
 }
 
 
@@ -88,7 +102,7 @@
 {
     if (searchText.length > 0) {
         NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", searchText];
-        self.filteredClassNames = [self.classNames filteredArrayUsingPredicate:searchPredicate];
+        self.filteredClassNames = [self.classNames filteredArrayUsingPredicate:searchPredicate].reverseObjectEnumerator.allObjects;
     } else {
         self.filteredClassNames = self.classNames;
     }

+ 7 - 7
Classes/GlobalStateExplorers/FLEXLibrariesTableViewController.m

@@ -9,7 +9,7 @@
 #import "FLEXLibrariesTableViewController.h"
 #import "FLEXUtility.h"
 #import "FLEXClassesTableViewController.h"
-#import "FLEXClassExplorerViewController.h"
+#import "FLEXObjectExplorerFactory.h"
 #import <objc/runtime.h>
 
 @interface FLEXLibrariesTableViewController ()
@@ -186,13 +186,13 @@
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     if (indexPath.row == 0 && self.foundClass) {
-        FLEXClassExplorerViewController *objectExplorer = [FLEXClassExplorerViewController new];
-        objectExplorer.object = self.foundClass;
-        [self.navigationController pushViewController:objectExplorer animated:YES];
+        [self.navigationController pushViewController:[FLEXObjectExplorerFactory
+            explorerViewControllerForObject:self.foundClass
+        ] animated:YES];
     } else {
-        FLEXClassesTableViewController *classesViewController = [FLEXClassesTableViewController new];
-        classesViewController.binaryImageName = self.filteredImageNames[self.foundClass ? indexPath.row-1 : indexPath.row];
-        [self.navigationController pushViewController:classesViewController animated:YES];
+        [self.navigationController pushViewController:[FLEXClassesTableViewController
+            binaryImageName:self.filteredImageNames[self.foundClass ? 0 : indexPath.row]
+        ] animated:YES];
     }
 }
 

+ 1 - 0
Classes/GlobalStateExplorers/FileBrowser/FLEXFileBrowserTableViewController.h

@@ -12,6 +12,7 @@
 
 @interface FLEXFileBrowserTableViewController : FLEXTableViewController <FLEXGlobalsEntry>
 
++ (instancetype)path:(NSString *)path;
 - (id)initWithPath:(NSString *)path;
 
 @end

+ 5 - 0
Classes/GlobalStateExplorers/FileBrowser/FLEXFileBrowserTableViewController.m

@@ -31,6 +31,11 @@
 
 @implementation FLEXFileBrowserTableViewController
 
++ (instancetype)path:(NSString *)path
+{
+    return [[self alloc] initWithPath:path];
+}
+
 - (id)init
 {
     return [self initWithPath:NSHomeDirectory()];

+ 1 - 0
Classes/ViewHierarchy/FLEXImagePreviewViewController.h

@@ -10,6 +10,7 @@
 
 @interface FLEXImagePreviewViewController : UIViewController
 
++ (instancetype)forImage:(UIImage *)image;
 - (id)initWithImage:(UIImage *)image;
 
 @end

+ 5 - 0
Classes/ViewHierarchy/FLEXImagePreviewViewController.m

@@ -21,6 +21,11 @@
 
 @implementation FLEXImagePreviewViewController
 
++ (instancetype)forImage:(UIImage *)image
+{
+    return [[self alloc] initWithImage:image];
+}
+
 - (id)initWithImage:(UIImage *)image
 {
     self = [super initWithNibName:nil bundle:nil];