0

それで、以前にこの質問をして、いくつかの回答を得ましたが、物事が非常に面倒だったので、ここで再質問することにしました.

ここでスクロールビューを初期化しています:

ScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)];
ScrollView.showsVerticalScrollIndicator=YES;
ScrollView.scrollEnabled=YES;
ScrollView.bounces = YES;
ScrollView.userInteractionEnabled=YES;
[self.view addSubview:ScrollView];
ScrollView.contentSize = CGSizeMake(10500,480);
[self.view addSubview:homeButton];

44 個のボタンを作成するための配列があり、配列には名前、写真のファイル名、座標などに関する情報が含まれています。

私はこれを実行しています:

for (int i = 0; i < 44; i++) {
    [self makeLabelsAndButtons:i];
    xPresCoord += 10;
}

私の見解ではDidLoad

これが makeLabelsAndButtons メソッドです。

-(void)makeLabelsAndButtons:(NSInteger)indexPath{

Button = [UIButton buttonWithType:UIButtonTypeCustom];
[Button addTarget:self action:@selector(presPressed:) forControlEvents:UIControlEventTouchUpInside];
Button.frame = CGRectMake(160.0, 240.0, 220.0, [[numbers objectAtIndex:indexPath] integerValue]);
Button.center = CGPointMake(xPresCoord, 200.0);
[Button setBackgroundImage:[UIImage imageNamed:[picArray objectAtIndex:indexPath]] forState: UIControlStateNormal];
[self.ScrollView addSubview:Button];

Label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 32)];
Label.text = [nameArray objectAtIndex:indexPath];
Label.center = CGPointMake([[numbers objectAtIndex:indexPath] integerValue], 390);
[Label setFont:[UIFont fontWithName:@"GurmukhiMN" size:27]];
Label.numberOfLines = 1;
Label.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5f];
[Label sizeToFit];
Label.textColor= [UIColor whiteColor];
[ScrollView addSubview:Label];
//[ScrollView insertSubview:Label atIndex:1];

//NSLog(@"name: %@, pic:%@, picY:%i", nameString, picString, picNumb);
for (UIView *subview in ScrollView.subviews) NSLog(@"View: %@", subview);

}

最後の NSLOG は、サブビュー (ラベルとボタン) が追加されていないことを示していますが、その理由はわかりません。

ボタンとラベルは次のように定義されます。

UIButton *Button;
UILabel *Label;

私の.hファイルで

どんな助けでも大歓迎です!

編集:これは他の質問へのリンクです

配列を使用したボタンの作成

4

1 に答える 1

0

ここに私のコードがあります、

#import "ViewController.h"

@interface ViewController ()
@property (strong,nonatomic) UIScrollView *scrollView;
@property (strong,nonatomic) NSArray *nameArray;
@property (strong,nonatomic) NSArray *numbers;
@property (strong,nonatomic) NSArray *picXCoords;
@property (strong,nonatomic) NSArray *picArray;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.nameArray = @[@"First",@"Second",@"Third"];
    self.numbers = @[@30,@50,@70];
    self.picXCoords = @[@160,@400,@700];
    self.picArray = @[@"back1.tiff", @"back2.tiff",@"Baldacci.tiff"];
    self.scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,480)];
    self.scrollView.showsVerticalScrollIndicator=YES;
    self.scrollView.scrollEnabled=YES;
    self.scrollView.bounces = YES;
    self.scrollView.userInteractionEnabled=YES;
    [self.view addSubview:self.scrollView];
    self.scrollView.contentSize = CGSizeMake(20000,480);

    for (int i = 0; i < 3; i++) {
        [self makeLabelsAndButtons:i];
    }
}

-(void)makeLabelsAndButtons:(NSInteger)indexPath{
    NSString *nameString = [self.nameArray objectAtIndex:indexPath];
    NSString *picString = [self.picArray objectAtIndex:indexPath];
    NSInteger picNumb = [[self.numbers objectAtIndex:indexPath] integerValue];
    NSInteger picXnum = [[self.picXCoords objectAtIndex:indexPath] integerValue];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button addTarget:self action:@selector(presPressed:) forControlEvents:UIControlEventTouchUpInside];
    button.frame = CGRectMake(160.0, 240.0, 220.0, picNumb);
    button.center = CGPointMake(picXnum, 200.0);
    [button setBackgroundImage:[UIImage imageNamed:picString] forState: UIControlStateNormal];
    [button setTitle:self.nameArray[indexPath] forState:UIControlStateNormal];
    [self.scrollView addSubview:button];
    NSLog(@"name: %@, picY:%i", nameString, picNumb);

}
于 2013-04-21T23:55:09.297 に答える