2011-11-08 8 views
0

フォーム入力画面のiPhoneアプリがあります。私はこれをUITableViewCellというカスタムを作ることによって行いました。それはUILabelUITextfieldです。私は "cellForRowAtIndexPath"がCore Dataから適切な値を取得し、UITextField's "textFieldDidEndEditing"メソッドが適切な値をCore Dataに保存するように設定しました。それは画面からスクロールするので、セルが自動解放されたカスタムUITableViewCell問題

  1. 私がテキストフィールドを編集した場合は、別のセルのテキストフィールドをクリックし、画面を、それをオフにスクロール:それは除いて...素晴らしい作品

  2. 「textFieldDidEndEditingは」私は問題を完全に理解してBADアクセスエラー

を取得し、私はそれを修正するための最良の方法はよく分かりません。私の最初の考えは、 "textFieldDidEndEditing"のロジックを "dealloc"に追加することでしたが、それはハッキリです。助言がありますか?

答えて

2

に役立ちます。ユーザーがドラッグを開始すると、私は最初のレスポンダーを辞任します。

ユーザーがスクロールを開始したときに「textFieldDidEndEditing」が呼び出されます。これは、テキストフィールドが画面外になる前に常に行われます。

+0

私は、 - (void)scrollViewWillBeginDraggingを使用しました:(UIScrollView *)scrollViewデリゲートメソッド – SMSidat

1
  • 無効にスクロール
  • の編集中にあなたができるものであること、あなたのテキストフィールド

を保持しています。私の意見では、ユーザーが必要がないために編集中にスクロールを無効にすることが最善であるため、彼もそうすることはできません。あなたのユーザができることを制限し、あなたのために「安全」にし、ユーザにとって使いやすくする。

もしあなたがそのようなことについて確信が持てない場合は、Appleが何をしているかを見てください。 iOS 5の設定アプリのように、携帯電話の名前を変更するときのように。あなたがユーザーとして本当に混乱何もアップすることはできませんので、あなたは、単にnilを

0

を1行を取得します。..この問題は、Table Viewの一部として再利用可能なセルにあります。テーブルがスクロールされるたびに、cellforRowatIndexPathが呼び出され、セルをデキューして返します。残念ながら、この機能はラベルなどの保持可能なデータを持つセルではうまく機能しません。したがって、セルをデキューする独自の方法を選択する必要があります。

私はすべての自分の細胞を保持するNSMutableArrayというセルを持っています。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
CustomTableViewCell *cell = [self dequeuwReusableCellwith:indexPath]; 
if (cell == nil) 
{ 
    cell = [[CustomTableViewCell alloc] init]; 
    [cells addObject:cell]; 
} 
// Configure the cell. 
NSString *temp = [NSString stringWithFormat:@"Cell %d",indexPath.row]; 
cell.textField.placeholder=temp; 
return cell; 
} 

これは再利用可能なセルをデキューする私のカスタムメソッドです。

-(CustomTableViewCell*)dequeuwReusableCellwith:(NSIndexPath*)indexpath 
{ 
if([cells count]>indexpath.row) 
{ 
    return [cells objectAtIndex:indexpath.row]; 
} 
return nil; 
} 

希望これは私が(のUITableViewに組み込まれている)、スクロールビューのデリゲートメソッドを使用して終了...

0

にテキストフィールドのデリゲートを設定し、私は同様の問題を持っていた..次のテーブルビューにカスタムセルののdeallocで