7218


ボタンを押すと`TableView`のセルを拡大させようとしており、セルは拡大するのですが、その拡大したセルの下のセルが、拡大の影響で少し隠れてしまいます。なので隠れるセルを下にずらしたいのですが、現在のコードだとなぜか上のセルが下にずれてしまいます。  
下記にコードを記します。全て載せると長くなるので、大事だと思うところを載せました。  
なぜ一つ上のセルが下にずれてしまうのでしょうか？  
どなたか分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。

ViewController.m

[code]

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        static const id identifiers[4] = {@"normalCell", @"cell", @"halfCell", @"normalCell"};
        NSString *CellIdentifier = identifiers[indexPath.row];
    
        UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            switch (indexPath.row) {
                case 0:
                    cell = [[NormalScrollCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
                    break;
                case 1:
                    cell = [[PagerCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                    break;
                case 2:
                    cell = [[HalfPager alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                    break;
                default:
                    cell = [[NormalScrollCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                    break;
            }
        }
    
        PagerCell *pagerCell = (PagerCell*)cell;
        NormalScrollCell *normalCell = (NormalScrollCell*)cell;
        HalfPager *halfCell = (HalfPager*)cell;
    
        switch (indexPath.row) {
            case 0:
                [normalCell setNormalScrollPager:normalCell.normalScrollPager];
                break;
            case 1:
                [pagerCell setViewPager:pagerCell.viewPager :pagerCell :halfCell];
                break;
            case 2:
                [halfCell setHalfPager:halfCell.scrollView];
                break;
            default:
                [normalCell setNormalScrollPager:normalCell.normalScrollPager];
                break;
        }
    
        return cell;
    }
    
[/code]

PagerCell.m

[code]

    - (void)setViewPager:(UIScrollView *)scrollView :(PagerCell*)cell :(HalfPager*)halfPager{
        _pagerCell = cell;
        _halfCell = halfPager;
        pagerScroll = scrollView;
    
        for (NSUInteger i = 1; i <= 3; i++) {
            NSString *imageName = [NSString stringWithFormat:@"image%d.png", i];
            UIImage *image = [UIImage imageNamed:imageName];
            UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    
            CGRect rect = imageView.frame;
            rect.size.height = kScrollObjHeight;
            rect.size.width = kScrollObjWidth;
            imageView.frame = rect;
            imageView.tag = i;
            [scrollView addSubview:imageView];
    
            [self saveImageView:imageView :i];
        }
    
        [self layoutScrollImages];
    }
    
    - (void)changeImageViewSize:(UIImageView*)imageView {   //ボタンが押された時の拡大処理
        CGRect imageViewRect = imageView.frame;
        imageViewRect.size.height = kScrollObjHeight * 1.5;
        imageView.frame = imageViewRect;
    
        _halfCell.frame = CGRectOffset(_halfCell.frame, 0, 50);   //セルを下にずらす処理を行っている
    }
    
[/code]


CC BY-SA 3.0
2015-02-27T09:21:21.280
7213
2015-02-27T10:06:03.363
5210
question
objective-c uitableview
TableViewのセルを下にずらす


セルの高さだけ変更したのでは、だめですよ。テーブルの行の高さも、いっしょに変えないと。  
テーブルの行の高さは、UITableViewDelegateプロトコルの、

[code]

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    
[/code]

に実装します。


CC BY-SA 3.0
2015-02-27T10:06:03.363
7218
2015-02-27T10:06:03.363
7362
7213
answer