0

配列の最後の結果に到達したときに非表示にしたい次のボタンがあり、配列の最初の結果に到達したときに前のボタンを非表示にしたい。結果が1つしか見つからないときにそれらを非表示にする方法を見つけました。

連絡先は配列です。

次のボタン:

        //button look
if (contacts != nil) { 
    if ([contacts count] > 1 ) [self.view addSubview:nextButton];

前のボタン:

       //button look
if (contacts != nil) { 
    if ([contacts count] > 1 ) [self.view addSubview:previousButton];

私はこれを試しました

if ([contacts count] < (index-1)) [self.view addSubview:nextButton];

「ポインタと整数の間の順序付けられた比較 ('NSUInterger'(aka 'unsigned int') と 'char * (*)(const char *,int)')」というエラーが表示されます。最後の結果に到達します。

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

4

3 に答える 3

0

スーパービューから削除することはないため、消えることはありません。ボタンの隠しプロパティを使用する必要があります。

[nextButton setHidden:NO];

非表示にする場合は YES を選択します。

エラーはおそらくインデックス エンティティからのものです。それを NSUInterger として型キャストしましたか? それを uint または int に変更します。(少し遅れて投稿されましたが、これは他の回答で言及されています:D)

于 2012-11-05T16:47:35.697 に答える
0
if ([contacts objectAtIndex:[contacts count]-1])
 { 
    [self.view addSubview:nextButton];
}
if([contacts objectAtIndex:0)
{
 [self.view addSubview:previousButton];
}

これが役に立てば幸いです... nil は、配列に含める要素がこれ以上ないことを伝えるだけです。調べるのに使えない..

于 2012-11-05T16:48:46.817 に答える
0

インデックスはNSUInterger. count は int で、NSUInteger は符号なし整数への typedef です。インデックスを int に設定する場所で変更するか、比較のために使用する場所で int に型キャストしてみてください。

ボタンに関する部分については、ロジックが正しく、「nextButton」をビューから削除しようとしている場合は、次のように非表示にするか、ビューから削除できます。

// To remove button
if ([contacts count] < (index-1)) [nextButton removeFromSuperview]; 

また

//To hide button
if ([contacts count] < (index-1)) nextButton.hidden = YES;
于 2012-11-05T16:32:13.897 に答える