0

私は、すべてUITextFieldの s が入力された後にのみボタンが有効になる iOS アプリケーションに取り組んでいます (つまり、それぞれの中に少なくとも 1 つの文字があります)。それぞれUITextFieldが のカスタムUITableViewCell内にありUITableViewます。ユーザーが各UITextFieldに値を入力したら、ボタンを有効にする必要があります。メソッド内で、viewDidLoad次のようにボタンを無効にします。

[_doneButton setEnabled:NO];

そして、次の方法があります。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    for (int i = 0; i < [self.table numberOfSections]; i++) {

        NSInteger rows =  [self.table numberOfRowsInSection:i];

        for (int row = 0; row < rows; row++) {

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:i];
            SimpleTableCell *cell = (SimpleTableCell *)[self.table cellForRowAtIndexPath:indexPath];

            for (UIView *subView in cell.subviews) {

                if ([subView isKindOfClass:[UITextField class]]) {
                    //Does not come to this point
                    UITextField *txtField = (UITextField *)subView;

                    if([[txtField text] length] > 0) {

                        //Enable button and bold title
                        [_doneButton setEnabled:YES];
                        [_doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:28]];

                    }

                     else {

                         [_doneButton setEnabled:NO];

                     }

                }

            }

        }

    }

    return YES;
}

残念ながら、私のコードは、カスタム セルに type の subView があるかどうかを確認する「if」句に入らず、UITextFieldそのため、ボタンが有効になりません。記録として、「SimpleTableCell」はUITableViewCell私が作成したカスタム クラスの名前です。私のコードは正しいように見えますが、正しく機能しない理由がわかりません。誰かが私が間違っていることを見ることができますか?

4

3 に答える 3

2

これは、セルの唯一の論理サブビューが、セルのすべてのアイテムを含む UIView であるためです。そのプロパティは「contentView」です。

UITableViewCell オブジェクトのコンテンツ ビューは、セルによって表示されるコンテンツのデフォルトのスーパービューです。ビューを追加するだけでセルをカスタマイズする場合は、それらをコンテンツ ビューに追加して、セルが編集モードに出入りするときに適切に配置されるようにする必要があります。

詳細はこちら: https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/contentView

于 2013-09-05T22:14:46.077 に答える
0

UITextField のデリゲートを設定しましたか? そのメソッドがまったく呼び出されない場合、それが問題です。

于 2013-09-05T22:14:37.067 に答える