2011-12-15 15 views
1

テーブルビューでは、今週予定されているNSMutableArrayからローカルサッカーの試合を表示しています。一致するものがない場合は、「今週は一致しません」というようなセルを表示します。私は一致のNSMutableArrayが空であれば別の配列、またはおそらく辞書を呼び出さなければならないと思いますが、この時点ではどこから開始するのか分かりません。どのようにこれを達成するための任意の考えですか?Howto?テーブルビューで、NSMutableArrayが空の場合、他の配列を表示

答えて

2

まず、一致するものがあるかどうかをテストします。存在する場合は、tableViewに一致と同数の行があることを伝えます。存在しない場合は、1行を戻します。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [matches count] ? [matches count] : 1; 
} 

マッチがあるかどうかを確認、あなたのセルを作成する場合がある場合はその後、、存在しない場合は、「いいえマッチ」を示さない、適切なものを示しています。あなたのテーブルのtableView:numberOfRowsInSection:デリゲートメソッドで

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // boiler plate cellForRowAtIndexPath stuff here... 

    NSUInteger row = [indexPath row]; 
    cell.textLabel.text = [matches count] ? [matches objectAtIndex:row] : @"No Matches"; 
    return cell; 
} 
+0

魅力的な作品です。ありがとう! – user1048042

0

、あなたはどんな一致があるかどうかを知る必要があります。そうでない場合は、1を返します。これにより、テーブルの行が1つになります。

一致がない場合はその後、あなたのtableView:cellForRowAtIndexPath:デリゲートメソッドでは、テキスト「いいえマッチ」でセルを返し、そうでない場合、あなたは試合に応じてセルを返す:

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 

    BOOL hasMatches = [myMatchesArray count] > 0; 
    return hasMatches ? [myMatchesArray count] : 1; 

} 


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

    BOOL hasMatches = [myMatchesArray count] > 0; 

    UITableViewCell *cell = ..... 

    if (hasMatches) { 

     MyMatchObject *match = (MyMatchObject *)[myMatchesArray objectAtIndex:indexPath.row]; 

     [cell.textLabel setText:match.matchText]; 

    }else{ 
     [cell.textLabel setText:@"No Matches"]; 
    } 

    return cell; 

} 
+0

返事をありがとう。アレックスのコードがいくぶん短くなったので、私はそれを実装しました。それでも、ありがとう! – user1048042

1

の両方あなたがテーブルで何をするかによって、後でいくつかの問題が発生するかもしれません。たとえば、テーブルの最初の行を挿入または削除した場合(つまり、最初の一致を追加した場合や最後の一致を削除した場合)セクション内の行数は変更されていませんが、行が追加または削除されているため、例外が発生します。

特別な行の削除などを防止する必要がある場合もあります。それはすべて少し乱雑になることができます。

これが問題の場合、ヘッダーまたはフッタービューに「一致しません」というメッセージが表示され、適切に表示されるように切り替える方がよい場合があります。

+0

あなたに投票してください。私は同じ理由で同様のソリューションを使用しています。 UILabelがテーブルの上をホバリングしていて、私はその 'hidden'プロパティを設定しました。 – Sulthan

関連する問題