2013-11-12 4 views
-1

Я пытаюсь объединить эти два проекта.Недвижимость 'images' не найден на объекте типа 'UIViewController *'

Bearded - An iPhone photo app

Thumbnail Picker View

На данный момент я просто пытаюсь держать их в отдельных контроллерах зрения и получить функциональность Thumbnail Picker, работающий в его собственном контроллере.

Я получаю сообщение об ошибке, как указано в названии, «„изображения“объекта не найден объект типа„UIViewController *“»

ошибка исходит из файла AppDelegate.m:

#import "AppDelegate.h" 
#import "ViewController.h" 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize viewController = _viewController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController = [[UIViewController alloc] init]; 

NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil]; 
NSMutableArray *images = [NSMutableArray arrayWithCapacity:paths.count]; 
for (NSString *path in paths) { 
    [images addObject:[UIImage imageWithContentsOfFile:path]]; 
} 

self.viewController.images = images; 
self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

return YES; 
} 


@end 

Вот AppDelegate.h:

#import <UIKit/UIKit.h> 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) UIViewController *viewController; 

@end 

Я попытался объявить свойство как так:

@property (strong, nonatomic) UIImageView *images; 

Я не могу это исправить, хотя я тщательно объединил эти два кодовых файла.

Вот Xcode проект, где я нахожусь в данный момент:

Xcode project

+0

Я не знаю, почему это было проголосовано. Я думаю, что слияние двух базовых кодов из GitHub, например, как в этом случае, вполне уместно для разработчика iOS. – Paul

ответ

3

свойство "images" вы объявили в вашем файле .h:

@property (strong, nonatomic) UIImageView *images; 

не является NSMutableArray, который вы пытаетесь назначить ему по этой линии:

self.viewController.images = images; 

Если вы можете получить типы одинаковыми (т. либо один объект UIImageView, либо NSMutableArray, содержащий много UIImages), тогда вам лучше повезти с назначением вещей этому свойству.

+0

Да, однако, эта строка свойств была попыткой исправить ошибку. Это не в оригинальном проекте «Thumbnail Picker View», с которым я связан. Я не понимаю, почему он работает в этом проекте, а не в моем, когда код идентичен. Единственное, что я сделал, это изменение: '@property (сильный, неатомный) ViewController * viewController;' to '@property (сильный, неатомный) UIViewController * viewController;' потому что я тоже получал ошибку. – Paul

+0

Я бы предложил вам изменить имена обоих, чтобы избежать путаницы. – satheeshwaran

+0

Вы меняете объект настраиваемого (унаследованного) ViewController с общим UIViewController. В проекте должен быть ViewController.m и .h, который будет реализован, и текущий файл, используя его объект ... надеюсь, что он помогает –

0

Я решил. Проблема заключалась в том, что я слиял проект с использованием Storiesboards и тот, который использовал программно сгенерированный ViewController. Ну, часть проблемы.

С тех пор я объединил проекты, которые я должен был предоставить контроллеру вида с помощью ThumbnailView другого имени. Я назвал его ElfViewController.

Это рабочий код:

AppDelegate.h

#import <UIKit/UIKit.h> 

@class ViewController; 
@class ElfViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) ElfViewController *viewController; // Changed here to ElfViewController 
@property (strong, nonatomic) ViewController *firstViewController; 

@end 

AppDelegate.m

#import "AppDelegate.h" 
#import "ViewController.h" 
#import "ElfViewController.h" 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize viewController = _viewController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.viewController = [[ElfViewController alloc] init]; //Changed here to ElfViewController 
self.firstViewController = [[ViewController alloc] init]; 

NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil]; 
NSMutableArray *images = [NSMutableArray arrayWithCapacity:paths.count]; 
for (NSString *path in paths) { 
    [images addObject:[UIImage imageWithContentsOfFile:path]]; 
} 

self.viewController.images = images; 
self.window.rootViewController = self.firstViewController; 
[self.window makeKeyAndVisible]; 

} 

@end 

Я еще новичок в Objective-C и только научились создавать ViewControllers в раскадровке, а не программно.

Также я не знал, что вы можете объявить свойство определенному контроллеру просмотра, а не просто UIViewContoller. Это еще одно место, где я споткнулся.

Смежные вопросы