1

アプリに iCarousel を追加しましたが、機能しません。私の他のアプリでは動作します。InterfaceBuilder でビュー、デリゲート、データソースをリンクしました

ViewController.h

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


@interface ViewController : UIViewController <iCarouselDataSource, iCarouselDelegate>{

IBOutlet UIWebView *WebView;
NSURLRequest *Request;

...
}
...

@property (nonatomic, retain) IBOutlet iCarousel *carousel;


@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize carousel;


- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
carousel.type = iCarouselTypeRotary;
carousel.center = CGPointMake(160.0, 250.0);
[self.view addSubview:carousel];

}

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

 - (void)viewDidUnload
{
[super viewDidUnload];
 self.carousel = nil;

}

#pragma mark -
#pragma mark iCarousel methods

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
//generate 100 buttons
//normally we'd use a backing array
//as shown in the basic iOS example
//but for this example we haven't bothered
return 100;
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
UIButton *button = (UIButton *)view;
if (button == nil)
{
    //no button available to recycle, so create new one
    UIImage *image = [UIImage imageNamed:@"page.png"];
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [button setBackgroundImage:image forState:UIControlStateNormal];
    button.titleLabel.font = [button.titleLabel.font fontWithSize:50];
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
}

//set button label
[button setTitle:[NSString stringWithFormat:@"%i", index] forState:UIControlStateNormal];

return button;
}

#pragma mark -
#pragma mark Button tap event

- (void)buttonTapped:(UIButton *)sender
{
//get item index for button
NSInteger index = [carousel indexOfItemViewOrSubview:sender];

[[[[UIAlertView alloc] initWithTitle:@"Button Tapped"
                             message:[NSString stringWithFormat:@"You tapped button number %i", index]
                            delegate:nil
                   cancelButtonTitle:@"OK"
                   otherButtonTitles:nil] autorelease] show];
}




 @end

私が間違ったことをしたアイデアはありますか?空の景色が見えます....

4

2 に答える 2

0

データソース メソッド内にブレーク ポイントを配置して、それらが呼び出されているかどうかを確認しましたか?

デバッガーを使用して、カルーセルの dataSource プロパティが iCarousel ビューで正しく設定されていることを確認してみてはどうでしょうか。

私の推測では、dataSource が正しくバインドされていないと思われますが、それ以上の情報がないと確信が持てません。

于 2012-10-23T20:26:42.150 に答える
0

次のメソッドの最初のNSArray配列が nil でないことを確認してください。それを書き込み、ブレークポイントをデータソースに配置し、コンパイルおよびビルド後にメソッドをデリゲートします....それは動作中のコードです...

- (void)awakeFromNib
{
    //set up data
    //your carousel should always be driven by an array of
    //data of some kind - don't store data in your item views
    //or the recycling mechanism will destroy your data once
    //your item views move off-screen
    self.items = [NSMutableArray array];
    for (int i = 0; i < 1000; i++)
    {
        [self.items addObject:@(i)];
    }
}

試してみてください....
ありがとう

于 2016-05-06T11:26:52.970 に答える