2017-07-25 9 views
0

私はplistを使って拡大したテーブルビューを作成しました。私はすべての値と画像をテーブルビューに取り込みました。ここでは、ユーザーがそのセルをクリックしたときに、特定のセルのアニメーションを作成したいと考えています。私のtableviewcellイメージだけのアニメーションを作成するには?

たとえば、最初の画像がデフォルトになります。次にそのセルをクリックすると、特定のセルが展開されます。ここでは私のイメージが隠れるようにする必要があります。再びユーザーが押すと画像が表示されます。これを行う方法?

+0

イメージビューの表示を切り替えたいのですか? –

+0

はい。点滅しているアニメーションと一緒にトグル –

答えて

-1

http://www.iostute.com/2015/04/expandable-and-collapsable-tableview.html

あなたはこのチュートリアルを見ることができます。これは、拡張可能なテーブルビューのセルに基づいて非常に良いチュートリアルです。

+0

これはおそらく非常に役に立ちますが、頻繁に中断するため、ここではリンクのみの回答はお勧めしません。彼らは申し分ないが、おそらくそれ自身の答えの補遺として提供するのは良い。 – halfer

+1

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 16826053) –

0

あなたがここに私の実装の一部である次github

に私の完全な解決策を確認することができます。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    movies = [[NSArray alloc] initWithObjects: 
       (NSArray*)[[Section alloc ] init:@"Istanbul" movieNames:@[@"Uskudar", @"Sariyer"] isExpanded:false], 
       (NSArray*)[[Section alloc ] init:@"Bursa" movieNames:@[@"Osmangazi", @"Mudanya", @"Nilufer"] 
       isExpanded:false], 
       (NSArray*)[[Section alloc ] init:@"Antalya" movieNames:@[@"Alanya", @"Kas"] isExpanded:false], nil 
       ];    
} 

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return movies.count; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return ((Section*)movies[section]).movies.count ; 
} 

-(void)toggleSection:(ExpandableHeaderFoorterView *)headerView withSection:(int)section 
{ 
    ((Section*)movies[section]).expanded = !((Section*)movies[section]).expanded; 
    [expandableTableView beginUpdates]; 
    for (int i= 0; i< ((Section*)movies[section]).movies.count; i++) 
    { 
     NSArray* rowsToReload = [NSArray arrayWithObjects:[NSIndexPath indexPathForRow:i inSection:section], nil]; 
     [expandableTableView reloadRowsAtIndexPaths:rowsToReload 
withRowAnimation:UITableViewRowAnimationFade]; 
    } 

    [expandableTableView endUpdates]; 

} 

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    ExpandableHeaderFoorterView* headerView = [[ExpandableHeaderFoorterView alloc] initWithCustom:((Section*)movies[section]).genre withSection:(int)section withDelegate:self]; 
    return (ExpandableHeaderFoorterView*)headerView; 
} 
1

ユーザーがセルをタップするたびに、UITableViewDelegateメソッドが呼び出され、この方法では、あなたはセルリロードすることができます(

セルがリロードされる
- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
} 

、以下のメソッドが呼び出されます他の人の間で)、そしてあなたがしなければならない唯一のことは、セルの現在の状態に応じて異なる高さを返すことです:

- (CGFloat)tableView:(UITableView *)tableView 
heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return (/* cell state */) ? 100.0 : 50.0; 
} 

あなたは、細胞の状態を保存するための複数の方法を持っています、あなたはそのモデルでそれを行うことができます。

他の方法もありますが、これは解決策に過ぎません。しかし、重要な点は、セルをリロードして、考慮したい条件に応じて異なる高さを返さなければならないことです。

関連する問題