1

タイトルに書いたように、ピッカービューdetailTextLabelを表示するためにクリックしたセルのピッカービューで選択された値 (配列によって設定された値) を書き留めようとしています。(ピッカービューは actionSheet に表示されます)。

私がやろうとしたことは、2 つの可変配列を設定することでした:pickerDatatableData. 最初は、pickerData配列には pickerview に表示される値が含まれており、tableData配列には 1 つの値しかありません。

次のメソッドが呼び出されると、選択範囲をtableData配列に記録し、この値を使用して配列の元の値を置き換えようとしています。detailTextLabel

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    [tableData replaceObjectAtIndex:row withObject:[pickerData objectAtIndex:row]];
}

は配列detailTextLabelによって移入され、これはメソッドで発生します。tableData

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

次のコード行を使用します。

cell.detailTextLabel.text = [pickerData objectAtIndex:indexPath.row];

私は何を間違っていますか?これを別の方法で行う方法についての提案はありますか? 私はプログラミングを始めて 1 か月しか経っていませんが、これには簡単な解決策があると確信しています。前もって感謝します!

4

3 に答える 3

0

あなたのdetailTextLabelにアクセスしてpickerView didSelectRow、ピッカー値をこれに設定することができますlabel

UILabel *detailTextLabel=(UILabel*)[[tableView cellForRowAtIndexPath:indexPath] detailTextLabel ];

detailTextLabel.text=[pickerData objectAtIndex:row];
于 2013-02-01T14:53:28.393 に答える
0

tableData NSMutableArray を初期化する必要があります: self.tableData = [[[NSMutableArray alloc] init] autorelease];

 id)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
UITableViewCell *cell =[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0];
cell.detailTextLabel.text = [pickerData objectAtIndex:row];
    [self.tableData insertObject:[pickerData objectAtIndex:row] atIndex:index]
}
于 2013-02-01T15:14:38.873 に答える
0

あなたはdetailTextLabelを更新するためにtableDataを使用していると言いましたが、問題を引き起こしている- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath pickerDataを使用していますcell.detailTextLabel.text = [pickerData objectAtIndex:indexPath.row];。使用cell.detailTextLabel.text = [tableData objectAtIndex:indexPath.row];して、問題が解決することを願ってください。

于 2013-02-01T14:41:27.090 に答える