tableView didSelectRowAtIndexPath 无法正常工作
Posted
技术标签:
【中文标题】tableView didSelectRowAtIndexPath 无法正常工作【英文标题】:tableView didSelectRowAtIndexPath doesn't work correctly 【发布时间】:2014-02-18 10:47:38 【问题描述】:我有一个非常奇怪的问题。
我在视图控制器中有一个UITableView
,我可以自定义所有我想要它工作的东西。但是我希望当我点击一行时会出现另一个视图(这并不难),所以我做到了:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSLog(@"didSelectRowAtIndexPath");
self.myFicheView.hidden=NO;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
但是当我单击一行时,不会调用该方法。就像它不起作用我尝试了很多东西,我发现了一些奇怪的东西。 当我在该行上短暂单击时没有任何反应,但是当我在 3 秒内单击它时它会起作用,并且当我在该行上滑动手指时也是如此。
有人知道这里有什么问题吗?
@interface MapViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *myTableView;
这里是我的 tableView 的连接检查器 http://hpics.li/256d01e
【问题讨论】:
你添加了self.myTableView.delegate = self; ? @iPatel 在这种情况下不会改变任何东西,财产可以保留它。强、弱或保留。 通过设置[tableView setAllowsSelection:YES]确保tableView可以响应选择; 如果是代表问题,他就不会说"when i click during 3 seconds it work"
self.myFicheView 放置在哪里 - 它是主视图的子视图吗?是在table view前面吗?
【参考方案1】:
我完全不知道您的 xib 是什么样子,假设如果视图出现在您的表格视图前面的某个地方,请尝试将您的表格视图放在该未隐藏视图的前面。
假设如果您仅使用 [tableView deselectRowAtIndexPath:indexPath animated:YES];
方法来取消隐藏选择,那么在 xib 中有一个属性可以为您提供此功能,通过使用它,您可以删除此方法并尝试运行您的代码。请提供您的 xib 或您实现的一些代码的快照,以便更好地说明。
【讨论】:
【参考方案2】:我想你不会调用委托方法
请将此代码包含到您的 viewDidLoad 方法中
myTableView.delegate=self;
myTableView.dataSource=self;
【讨论】:
它不起作用。就像我说的那样,它有效,但不是正确的。我必须单击 3 秒才能调用方法 didSelectRowAtIndex。 请正确查看问题。已经在 StoryBoard 中建立了连接。 您只需确保您正在调用的 didSelectRowAtIndexPath ....在我犯错之前,我调用了 didDeselectRowAtIndexPath 方法..请确保也 这是个好方法。我认为这不是方法错误的问题,而是设置的问题。事实上它可以工作,但不是正常的。我只希望当我在行上单击一次时它可以工作。以上是关于tableView didSelectRowAtIndexPath 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
SFSafariViewController 在安装 YouTube 时请求打开 YouTube 应用
如何使用tableview外的按钮将tableview移动到新的tableview
tableView(cellForRowAtIndexPath) 与 tableView.cellForRowAtIndexPath()?
TableView里面的tableview cell swift 3
将 tapGesture 添加到 tableView 则无法执行 tableView(_ tableView: UITableView, didSelectRowAt indexPath: Index