0

グリッドビューで画像を表示しています。4、8、12、16などの画像がある場合は正常に機能しますが、4、8、12より多いまたは少ない画像がある場合、それらをクリックできません。6 つの画像がある場合、4 つの画像をクリックできますが、5 番目と 6 番目の画像をクリックすることはできません。

これは私のテーブルビューコードです

- (UITableViewCell *)tableView:(UITableView *)tableView_p cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *hlCellID = @"hlCellID";

    UITableViewCell *hlcell = [tableView_p dequeueReusableCellWithIdentifier:hlCellID];
    if(hlcell == nil) {
        hlcell =  [[[UITableViewCell alloc] 
                    initWithStyle:UITableViewCellStyleDefault reuseIdentifier:hlCellID] autorelease];
        hlcell.accessoryType = UITableViewCellAccessoryNone;
        hlcell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    int section = indexPath.section;
    NSMutableArray *sectionItems = [sections objectAtIndex:section];

    int n = [sectionItems count];
    int i=0,i1=0; 

    while(i<n){
        int yy = 4 +i1*74;
        int j=0;
        for(j=0; j<4;j++){

            if (i>=n) break;
            NSLog(@"Counter i %d , j %d , n %d ",i,j, n);
            Item *item = [sectionItems objectAtIndex:i];

            CGRect rect = CGRectMake(16+75*j, yy, 65, 65);
            UIButton *button=[[UIButton alloc] initWithFrame:rect];
            [button setFrame:rect];
            //UIImage *buttonImageNormal=[UIImage imageNamed:item.image];
            UIImage *buttonImageNormal = item.savedImage;
            [button setBackgroundImage:buttonImageNormal    forState:UIControlStateNormal];
            [button setContentMode:UIViewContentModeCenter];

            NSString *tagValue = [NSString stringWithFormat:@"%d%d", indexPath.section+1, i];
            button.tag = [tagValue intValue];
            //NSLog(@"....tag....%d", button.tag);

            [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
            [hlcell.contentView addSubview:button];
            [button release];

            /*UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake((75*j)-4, yy+44, 80, 12)] autorelease];
             label.text = item.title;
             label.textColor = [UIColor blackColor];
             label.backgroundColor = [UIColor clearColor];
             label.textAlignment = UITextAlignmentCenter;
             label.font = [UIFont fontWithName:@"ArialMT" size:12]; 
             [hlcell.contentView addSubview:label];
             */
            i++;
        }
        i1 = i1+1;
    }
    return hlcell;
}

ここに画像の説明を入力

- (void)loadView {

    [super loadView];
    sections = [[NSMutableArray alloc] init];
    imagesPath = [[NSMutableArray alloc] init];

    for(int s=0;s<1;s++) { // 4 sections
        sectionPattern = [[NSMutableArray alloc] init];


        for(int i=0;i<9+3;i++) {  // 12 items in each section 
            NSLog(@"Loop First %d",i);
           //Here i am allocating images to sectionPattern and than in sections and using it later in above code
            NSLog(@"Loop OUt %d",i);
        }
        [sections addObject:sectionPattern];

    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}
4

1 に答える 1

1

コードを追加せずに言うのは少し難しいですが、正しい値を返していることを確認する必要があります- (NSInteger)numberOfRowsInSection:(NSInteger)section

于 2012-11-28T21:43:49.517 に答える