0

データがサーバーに保存されている表のセルを編集するためのチュートリアルを行っています。すべて正常に動作しています。表のセルを編集して「保存」ボタンをクリックできますが、表の概要に戻っても更新されません。私は3つのテーブルフィールドを持っています:

  • タイトルフィールド
  • 著者フィールド
  • atextField

問題がこのコードに起因するかどうかはわかりませんが、そうであると思います。チュートリアルの例には 2 つのフィールドしかなく、3 つのフィールドが必要ですが、3 つのテキストフィールドに対してこのコードを実装する方法がわかりません。

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder];
    if (textField == titleField) {
        [authorField becomeFirstResponder];
    }
    if (titleField == authorField) {
        [self save];
    }
    return YES;
} 

は既に試しif (titleField == authorField == atextField)ましたが、エラー メッセージには次のように表示されますComparison between pointer and integer ('int' and 'UITextField')。私も試しif (titleField == authorField && titleField == atextField && authorField == atextField){てみましたが、エラーは発生しませんが、データが変更を更新しないという事実は変わりません。

上記のコードはどのようになりますか?

4

1 に答える 1

2

これらの IF には意味がありません。これを行うことはできません。

if (titleField == authorField == atextField)

最初の == の結果をテキストフィールドと比較しているため、ポインターと整数の比較エラーが発生します。

2つ目では、

if (titleField == authorField && titleField == atextField && authorField == atextField)

titleField は同時に 3 つになることはできないため、これが呼び出されることはありません。

私の最初の考えは、次のようなことをすることです:

    if (textField == titleField) {
            [authorField becomeFirstResponder];
        }
    else if ((textField == authorField){
            [atextField becomeFisrtResponder];
     else if (titleField == atextField) {
            [self save];
        }

これがあなたのやりたいことだと思います。

于 2012-06-26T12:29:27.657 に答える