【问题标题】:tableView didSelectRowAtIndexPath doesn't work correctlytableView didSelectRowAtIndexPath 无法正常工作
【发布时间】: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前面吗?

标签: ios iphone objective-c uitableview didselectrowatindexpath


【解决方案1】:

我完全不知道您的 xib 是什么样子,假设如果视图出现在您的表格视图前面的某个地方,请尝试将您的表格视图放在该未隐藏视图的前面。

假设如果您仅使用 [tableView deselectRowAtIndexPath:indexPath animated:YES]; 方法来取消隐藏选择,那么在 xib 中有一个属性可以为您提供此功能,通过使用它,您可以删除此方法并尝试运行您的代码。请提供您的 xib 或您实现的一些代码的快照,以便更好地说明。

【讨论】:

    【解决方案2】:

    我想你不会调用委托方法

    请将此代码包含到您的 viewDidLoad 方法中

    myTableView.delegate=self;
    myTableView.dataSource=self;
    

    【讨论】:

    • 它不起作用。就像我说的那样,它有效,但不是正确的。我必须单击 3 秒才能调用方法 didSelectRowAtIndex。
    • 请正确查看问题。已经在 StoryBoard 中建立了连接。
    • 您只需确保您正在调用的 didSelectRowAtIndexPath ....在我犯错之前,我调用了 didDeselectRowAtIndexPath 方法..请确保也
    • 这是个好方法。我认为这不是方法错误的问题,而是设置的问题。事实上它可以工作,但不是正常的。我只希望当我在行上单击一次时它可以工作。
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多