私は前にiOSでUITableView
を使っていましたが、本当に変わったことが起こっているようです。 UITableViewCell
を選択するには、新しいUIViewController
をプッシュする必要があります。場合によっては、UITableView
が含まれているUIViewController
にポップアップして以前のものと異なるUITableViewCell
を選択しようとすると、以前にタップされたUITableViewCell
が自動的に選択される以外はすべて正常に動作しています。私はそれがあなたに面白く聞こえるかもしれないことを知っていますが、それは私に起こっているし、今一日以上私を悩ませています。どんな助けも大いに役立つでしょう。私はそれが本当にばかげていることを知っていますが、私はそれを見つけられないようです。ここでセルをタップしている間、奇妙なUITableViewの動作ですか?
は「didSelectRowAtIndexPath」はどのように見えるかである - 時間のデバッグ後
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"row - %ld", (long)indexPath.row);
Notification *obj = [objects objectAtIndex:indexPath.row];
if (obj.post.post_id) {
FeedViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"postsView"];
[self.navigationController pushViewController:vc animated:YES];
vc.postID = obj.post.post_id;
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}
else
{
UserProfileViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"userProfile"];
vc.username = obj.user.username;
[self.navigationController pushViewController:vc animated:YES];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}
}
、私は戻ってくる時に、意図UITableViewCell
は、それがになっていますデフォルトの方法で強調表示されることは決してありません、それを見ることができましたタッチが解除されるとすぐに、「古い」UITableViewCell
が選択され、その動作が実行されます。
UPDATE
cellForRowAtIndexPath
はこのように書きます -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NotificationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"notificationCell"];
Notification *obj = [objects objectAtIndex:indexPath.row];
cell.cellIndex = (int)indexPath.row;
cell.delegate = self;
cell.userImage.layer.cornerRadius = cell.userImage.frame.size.width/2.0f;
[cell.userImage sd_setImageWithURL:[NSURL URLWithString:obj.user.photo]
placeholderImage:[UIImage imageNamed:@""]];
cell.timeLabel.text = obj.timestamp;
cell.descriptionLabel.text = [@"@" stringByAppendingString:[[obj.user.username stringByAppendingString:@" "] stringByAppendingString:obj.message]];
cell.descriptionLabel.userHandleLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
NSLog(@"User tapped %@", string);
[self didTapOnCallout:string];
};
cell.descriptionLabel.hashtagLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
NSLog(@"Hashtag tapped %@", string);
[self didTapOnHashTag:string];
};
cell.descriptionLabel.urlLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
NSLog(@"URL tapped %@", string);
[self didTapOnURL:string];
};
return cell;
}
私は、URLとハッシュタグのタップをリッスンするためにKILabelを利用しています。
は、あなたの質問には、コードを更新します。 –
コードを更新しました@RajeshkumarR – genaks
ビューコントローラに 'didDeselectRowAtIndexPath'がありますか? (私は時々これらの名前でエラーを起こした。) –