0

を含むテーブル ビュー コントローラーを作成しUITextFieldました。から来た入力テキストのテーブルビューコントローラーセルにデータを入力するにはどうすればよいですかUITextField。次のことを試しましたが、配列が空であるか、空になっているようです

- (IBAction)endingInput:(id)sender{
    [sender resignFirstResponder];

    //send the message to the table cell
    NSMutableArray *history = [[NSMutableArray alloc] init];
    [history addObject:[NSString stringWithFormat:@"%@",self.chatMessageField.text]];
    [self.chatHistory addObject:history];
    [myTableView reloadData];

    //push the message to server
    [self initiateMessageSending:self.chatMessageField.text];

    chatMessageField.text = @"";
    [history release];
}

私のcellForRowAtIndex方法で;

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

// Configure the cell...
if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

if(tableView == self.myTableView){
    cell.textLabel.text = [chatHistory objectAtIndex:indexPath.row];
}
return cell;

ブレークポイントを設定しましたが、通過しません。配列が空であると思われます。

reloadData同様に、メソッドを呼び出すのに最適な場所はどこですか?

また、chatHistoryプライベートメンバーですか、それを初期化する方法はあり[[self.chatHistory alloc] init];ますか?

私はそれがよくある質問であることを知っていますが、私はこれについてしばらくの間議論してきました.

4

2 に答える 2

0

私はあなたがあなたの割り当てと初期化を忘れていると思いますchatHistory

- (void)viewDidLoad
{
    self.chatHistory = [[NSMutableArray alloc] init];
}
于 2012-11-21T13:03:07.307 に答える
0

初期化chatHistoryしていない場合、それは存在しません...空であってもかまいません! (ここでの「プライベート メンバー」の意味がよくわかりません。)

の値をログに記録するとchatHistory、それが nil であるか空であるかが確実にわかります。

chatHistory私が目にする他の問題は、他の ( ) 配列を読み込もうとしているhistoryが、その内容を文字列として使用しようとしていることです。配列の配列にするか、文字列の配列にするかを決定してから、一貫性を保つ必要があります。

(また[[self.chatHistory alloc] init];、新しいオブジェクトを作成するための有効な構文ではありません。正しい方法については、Objective-C 言語リファレンスを参照してください。)

于 2012-11-21T13:05:53.930 に答える