iCarousel不会加载图片

时间:2016-07-15 13:59:01

标签: ios objective-c icarousel

所以我正在尝试使用iCarousel以图像的形式显示产品,然后用户可以简单地滚动并查看所有可用的产品。

出于某种原因,当您加载viewcontroller时它根本不显示任何图像,甚至不显示轮播,它在我使用数字int等之前就已经有效了。

我的代码如下:

ApparelViewController.m

#import "ApparelViewController.h"

@interface ApparelViewController ()

@property (nonatomic, strong) NSMutableArray *images;

@end

@implementation ApparelViewController

@synthesize carouselView = _carouselView;
@synthesize images = _images;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]))
    {
        //get image paths
        NSArray *imagePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:@"Products"];

        //preload images (although FXImageView can actually do this for us on the fly)
        _images = [[NSMutableArray alloc] init];
        for (NSString *path in imagePaths)
        {
            [_images addObject:[UIImage imageWithContentsOfFile:path]];
        }
    }
    return self;
}

- (void)dealloc
{
    //it's a good idea to set these to nil here to avoid
    //sending messages to a deallocated viewcontroller
    _carouselView.delegate = nil;
    _carouselView.dataSource = nil;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithRed:236/255 green:240/255 blue:241/255 alpha:1];

    // Do any additional setup after loading the view.
    _carouselView.type = iCarouselTypeRotary;
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    //free up memory by releasing subviews
    self.carouselView = nil;
}

- (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
    return [_images count];
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view
{
    if (view == nil)
    {
        FXImageView *imageView = [[FXImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        imageView.asynchronous = YES;
        imageView.reflectionScale = 0.5f;
        imageView.reflectionAlpha = 0.25f;
        imageView.reflectionGap = 10.0f;
        imageView.shadowOffset = CGSizeMake(0.0f, 2.0f);
        imageView.shadowBlur = 5.0f;
        imageView.cornerRadius = 10.0f;
        view = imageView;
    }
    //show placeholder
    ((FXImageView *)view).processedImage = [UIImage imageNamed:@"page.png"];

    ((FXImageView *)view).image = _images[index];

    return view;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)goBack:(id)sender {

    NSString * storyboardName = @"Main";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"navBar"];
    [self presentViewController:vc animated:YES completion:nil];
}

@end

然后在ApparelViewController.h文件中,我有以下代码:

#import <UIKit/UIKit.h>
#import "iCarousel.h"
#import "FXImageView.h"

@interface ApparelViewController : UIViewController <iCarouselDelegate, iCarouselDelegate>

@property (strong, nonatomic) IBOutlet UIButton *backButton;
@property (strong, nonatomic) IBOutlet iCarousel *carouselView;

@end

真正烦人的是我之前使用过iCarousel但是对于Swift来说我知道它是如何工作的但是我不太了解Obj-C!

关于如何显示图像的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以检查的一些事项,

  1. 检查&#39;图片&#39;在&#39; numberOfItemsInCarousel&#39;中返回一个大于0的值,显而易见,但值得检查。
  2. 检查图像是否实际加载,即检查图像[index]实际加载图像。
  3. 我对FXImageView并不熟悉,但请尝试使用// test.js var app = require('../lib/server') // This connects mongoose to a database var assert = require('assert'); var httpstatus = require('http-status'); var superagent = require('superagent'); // Connect to mongoose var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:37017/testDB'); // THIS THROWS ERROR because server.js is connecting to localhost:27017/liveDB // Models we will be testing var thing = require('../models/thing.js'); describe('Thing', function() { before(function() { // Clear the database here } beforeEach(function() { // Insert, modify, set up records here } it('saves the thing to the database', function() { // Save and query a thing here (to the test DB) }); }); 而不是分配(void)setImage:(UIImage *)image;。文档说.image实际上并没有设置图像,但添加了效果。
  4. 如果这些都没有解决您的问题,请发表评论,我会继续寻找,祝您好运。