1

サブクラス化されたtextFieldsでいっぱいのtableViewがあります。以下は私がそれらを作成した方法です:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = kOddCellIdentifier;

    CustomCell01 *oddCell = (CustomCell01 *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    oddCell.myTextfield.delegate=self;
    oddCell.myTextfield.tag = indexPath.row;
    oddCell.myTextfield.text=[[self.Page01dataArray objectAtIndex:indexPath.row]objectForKey:@"value"];
    bool editable = [[[self.Page01dataArray objectAtIndex:indexPath.row] objectForKey:@"editable"] boolValue];
    if (editable==true) {
        oddCell.myTextfield.textColor=[UIColor redColor];
    } else {
        oddCell.myTextfield.textColor=[UIColor blackColor];
        [oddCell.myTextfield setBorderStyle:UITextBorderStyleNone];
        oddCell.myTextfield.enabled=NO;
    }
    [oddCell.myTextfield addTarget:self action:@selector(updateField:) forControlEvents:UIControlEventEditingDidEnd];

    return oddCell;
}

ユーザーが[次へ]ボタンをタップしたときに次のテキストフィールドに移動する方法がわかりません。通常、次のテキストフィールドを最初のレスポンダーにする必要がありますが、すべてのテキストフィールドの名前が「myTextfield」であるため、その方法がわかりません。助けてください!

4

2 に答える 2

0

私はついにcellForRowAtIndexPathに配列を作成することで解決策を見つけることができました

[nextTFarray addObject:oddCell.myTextfield]; 

その後:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    int i=[nextTFarray count];
    int x=textField.tag+1;
    UITextField *nextTextField = (UITextField *)[nextTFarray objectAtIndex:x];
    if (x<i-1) {
        [nextTextField becomeFirstResponder];
    } else {
        [textField resignFirstResponder];
    }
    return YES;
}
于 2012-09-15T08:39:35.280 に答える
0

cellForRowAtIndexPath、名前を。のように設定し"myTextfield-<row>"ます。次に、それを解析して、prev/nextフィールドが何であるかを知ることができます。すでに設定myTextfield.tagしてindexPath.rowいるので、名前を解析する必要さえありません。前のフィールドと次のフィールドはそれぞれ"myTextfield-<tag-1>""myTextfield-<tag+1>"です。

于 2012-09-14T01:19:59.513 に答える