私は前に仕事をしたことがあるコードを使っています。本質的に、ユーザーは、いくつかのボタンを使って投稿に「はい」または「いいえ」と答えます。 yesまたはnoを押すと、正常に動作するデータベースが更新され、動作していない表示可能なUIも更新されます。このUIはボタンを更新してボタンが選択され、その他が強調表示され、ユーザーの操作のために両方が無効になります。また、2つのUILabelを変更します。これらのボタンが呼び出すメソッドは、データベースを更新し、tableViewCellからボタンを取得し、変更を更新する必要があります。別のViewControllerで動作するメソッドがあるので、ここでその違いを理解できません。ここに私のcellForRowAtIndexPathテーブルビューviewWithTagはUIElementsを取得していませんobjective-c
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *simpleTableIdentifier = [NSString stringWithFormat:@"%ld,%ld",(long)indexPath.section,(long)indexPath.row];
NSLog(@" simple: %@",simpleTableIdentifier);
if (indexPath.row==0) {
ProfileFirstCell *cell = [self.tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
cell = [[ProfileFirstCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:simpleTableIdentifier];
}
cell = [self createProfileCell:cell];
return cell;
}else{
YesNoCell *cell =[self.tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell==nil) {
cell=[[YesNoCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell = [self createYesNoCell:cell:indexPath];
return cell;
}
}
は、基本的にこれが何をするか最初のセル内のユーザプロファイルを作成し、ユーザーが求めていることを、すべての質問にロードされています。これは、古いtableViewとこのtableViewの間に見られる大きな違いです。 createYesNoCellで、私はのUIElementを作成し、
cell.yesVoteButton.tag=indexPath.row+ yesVoteButtonTag1;
cell.noVoteButton.tag=indexPath.row+ noVoteButtonTag1;
cell.yesCountLabel.tag=indexPath.row+ yesCountLabelTag1;
cell.noCountLabel.tag=indexPath.row+ noCountLabelTag1;
ボタンを次のようにタグを作成するものの数を開始セレクタを持っています。次のボタンでどのボタンが押されたかを検出します。
NSInteger index;
if(sender.tag>=yesVoteButtonTag1){
NSLog(@"Yes button pressed");
votedYes=true;
index=sender.tag-yesVoteButtonTag1;
}else{
NSLog(@"No button Pressed");
votedYes=false;
index=sender.tag-noVoteButtonTag1;
}
UILabel *yesLabel = (UILabel*) [self.tableView viewWithTag:index+yesCountLabelTag1]; // you get your label reference here
UIButton *yesButton=(UIButton *)[self.tableView viewWithTag:index+1+yesVoteButtonTag1];
NSLog(@"Tag IN METHOD: %ld",index+yesVoteButtonTag1);
UILabel *noLabel = (UILabel*) [self.tableView viewWithTag:index+1+noCountLabelTag1]; // you get your label reference here
UIButton *noButton=(UIButton *)[self.tableView viewWithTag:index+noVoteButtonTag1];
これらのviewWithTagコールは、それらを見るとnilです。私の以前の実装から見ることができる唯一の違いは、古いものはセクションと1つの行を持ち、これはすべて行と1つのセクションです。だからindexPath.rowでindexPath.sectionを置き換えることはそれを考慮する必要があります。また、cellForRowAtIndexPathで作成されたタグが、yes/no voteメソッドで復元された行と同じであることを確認しました。これは、indexPath.row == 0で作成されたプロファイルセルのために1つ置き換えられたためです。私はyes/no投票メソッドにセルを渡そうとしましたが、同様の投稿に対していくつかの提案としてcontentViewを使ってボタンとラベルを復元しようとしました。しかし、これは私の問題を解決するように見えませんでした。本当にこれについてのいくつかの洞察に感謝します。