2017-04-04 12 views
0

私は前に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を利用しています。

+1

は、あなたの質問には、コードを更新します。 –

+0

コードを更新しました@RajeshkumarR – genaks

+1

ビューコントローラに 'didDeselectRowAtIndexPath'がありますか? (私は時々これらの名前でエラーを起こした。) –

答えて

0

ハッシュタグとURLのタップを検出するために使用していたKILabelライブラリのバグだったようです。こっち

頭あなたが同様の問題に直面している場合 - https://github.com/Krelborn/KILabel/issues/57

関連する問題