1

我正在尝试合并这两个项目。

Bearded - iPhone 照片应用程序

缩略图选择器视图

在这一点上,我只是试图将它们保存在单独的视图控制器中,并让 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 项目

4

2 回答 2

3

images您在 .h 文件中声明的 " " 属性:

@property (strong, nonatomic) UIImageView *images;

不是您尝试通过此行分配给它的 NSMutableArray:

self.viewController.images = images;

如果您可以使类型相同(即单个 UIImageView 对象或包含许多 UIImages 的 NSMutableArray),那么您应该有更好的运气将事物分配给该属性。

于 2013-11-12T05:09:37.150 回答
0

我解决了。问题是我正在合并一个使用 Storyboards 的项目和一个使用以编程方式生成的 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 的新手,只学习了如何在 Storyboard 中创建 ViewControllers 而不是以编程方式。

另外我不知道您可以将属性声明给特定的 View Controller 而不仅仅是一般的UIViewContoller. 那是我被绊倒的另一个地方。

于 2013-11-13T21:31:19.690 回答