0

iOS と Xcode は初めてです。簡単な計算機で作業しています。コードを使用して 30 個の textFields を追加したテーブル ビューがあります。タグを割り当てます。

次に、NumPad タイプの textField 用のキーボードを作成しました。そのためには、ツールバーを使用してキーボードを閉じる必要がありました。

しかし、プログラムを実行すると、最後のタグを持つ textField はキーボードを無効にしますが、他のタグは無効にします。コードで textField に言及すると、最後のタグの textField が割り当てられると思います。

私のコードが与えられます。

for (int i = 0; i < 30; i++) {    
    mainTextField = [[UITextField alloc] initWithFrame:CGRectMake(20, (80 + (i * 60)), 280, 30)];        
    mainTextField.borderStyle = UITextBorderStyleRoundedRect;
    mainTextField.textColor = [UIColor blackColor]; 
    mainTextField.font = [UIFont systemFontOfSize:17.0]; 
    mainTextField.backgroundColor = [UIColor whiteColor]; 
    mainTextField.autocorrectionType = UITextAutocorrectionTypeNo;   
    mainTextField.backgroundColor = [UIColor clearColor];
    mainTextField.keyboardType = UIKeyboardTypeNumberPad;
    mainTextField.keyboardType=UIKeyboardTypeDecimalPad;
    mainTextField.returnKeyType = UIReturnKeyDone;  
    mainTextField.tag= i+1;
    mainTextField.delegate=self;

       [self->mainTableView  addSubview:mainTextField];

       self. numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
       self. numberToolbar.barStyle = UIBarStyleBlackOpaque;
       self. numberToolbar.items = [NSArray arrayWithObjects:
                               [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
                               [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                               [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                               nil];
       [self.numberToolbar setTag:i+1];
        [self.numberToolbar sizeToFit];

        mainTextField.inputAccessoryView = numberToolbar;


        mainTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

    mainLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 55+(i*60), 280, 18)];
    mainLabel.backgroundColor = [UIColor clearColor];
    mainLabel.textAlignment = UITextAlignmentLeft;
    mainLabel.tag= i+1;


    {
        switch ([mainLabel tag]) {
            case 1:
                mainLabel.text=[ passedValue objectAtIndex:0];
                break;
            case 2:
                mainLabel.text=[ passedValue objectAtIndex:1];
                break;
            case 3:
                mainLabel.text=[ passedValue objectAtIndex:2];
                break;
            case 4:
                mainLabel.text=[ passedValue objectAtIndex:3]; 
                break;
            case 5:
                 mainLabel.text=[ passedValue objectAtIndex:4];  
                break;
            case 6:
                mainLabel.text=[ passedValue objectAtIndex:5]; 
                break;
            case 7:
                mainLabel.text=[ passedValue objectAtIndex:6]; 
                break;
            case 8:
                mainLabel.text=[ passedValue objectAtIndex:7]; 
                break;
            case 9:
                 mainLabel.text=[ passedValue objectAtIndex:8]; 
                break;
            case 10:
                 mainLabel.text=[ passedValue objectAtIndex:10]; 
                break;
            case 11:
                 mainLabel.text=[ passedValue objectAtIndex:11]; 
                break;
            case 12:
                mainLabel.text=[ passedValue objectAtIndex:12]; 
                break;
            case 13:
                 mainLabel.text=[ passedValue objectAtIndex:13]; 
                break;
            case 14:
                mainLabel.text=[ passedValue objectAtIndex:14]; 
                break;
            case 15:
                 mainLabel.text=[ passedValue objectAtIndex:15]; 
                break;
            case 16:
                 mainLabel.text=[ passedValue objectAtIndex:16]; 
                break;
            case 17:
                 mainLabel.text=[ passedValue objectAtIndex:17]; 
                break;
            case 18:
                 mainLabel.text=[ passedValue objectAtIndex:18];    
                break;
            case 19:
                 mainLabel.text=[ passedValue objectAtIndex:19]; 
                break;
            case 20:
                 mainLabel.text=[ passedValue objectAtIndex:20]; 
                break;
            case 21:
                 mainLabel.text=[ passedValue objectAtIndex:21]; 
                break;
            case 22:
                mainLabel.text=[ passedValue objectAtIndex:22]; 
                break;
            case 23:
               mainLabel.text=[ passedValue objectAtIndex:23]; 
                break;
            case 24:
               mainLabel.text=[ passedValue objectAtIndex:24]; 
                break;
            case 25:
                 mainLabel.text=[ passedValue objectAtIndex:25]; 
                break;
            case 26:
                mainLabel.text=[ passedValue objectAtIndex:26]; 
                break;
            case 27:
                mainLabel.text=[ passedValue objectAtIndex:27]; 
                break;
            case 28:
                 mainLabel.text=[ passedValue objectAtIndex:28]; 
                break;
            case 29:
                 mainLabel.text=[ passedValue objectAtIndex:29]; 
                break;

            default:
                break;
        }



    [self->mainTableView addSubview:mainLabel];
    [self configureView];
4

1 に答える 1

0

このコードにはいくつか問題があります。

まず第一に、これは30 個のテキスト フィールドを持つテーブルを作成する方法ではありません。代わりに、 を使用し、そのとをビュー コントローラにUITableView設定して、必要なメソッドを実装します。とりわけ、30 を返します。次に、セルを作成し、そこにテキスト フィールドを1 つ入れてセルを返します。このようなテーブル ビューを設定する方法については、インターネット上にたくさんのチュートリアルがあり、Apple のドキュメントを読むこともできます。tableView 自体に追加のビューを追加することはほとんどありません。delegatedataSourcetableView:numberOfRowsInSection:tableView:cellForRowAtIndexPath:

self->tableViewは間違っています。この->表記法は、構造体へのポインターを逆参照し、その変数の 1 つにアクセスまたは設定するときに、C で (とりわけ) 使用されます。Objective-C オブジェクトでは使用しません。単に書くself.tableView。プロパティを正しく宣言した場合、これは機能するはずです。

そのスイッチブロックは不要です。代わりにこれをしてみませんか:

mainLabel.text = [passedValue objectAtIndex[mainLabel tag]-1];
于 2012-08-26T12:58:49.690 に答える