didSelectRowAtIndexPath没有被调用

时间:2011-08-02 00:04:25

标签: iphone objective-c ios cocoa-touch didselectrowatindexpath

我在UIViewController中有一个UITableView,如下所示:

·H

@interface OutageListViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> {
   IBOutlet UITableView *outageTable;

的.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"Selected");
}

我有自定义表格单元格:

// EDIT 我在我的定制视图上并排发射UILabel,以及整个区域的背景。但是在调整/删除我在自定义单元格上放置的背景图像和标签之后,仍然没有调用“didSelectRowAtIndexPath”。 // END EDIT

@interface AbstractSummaryListViewCell : UITableViewCell {...}

@interface FiveColumnSummaryCell : AbstractSummaryListViewCell {...}

这个UIView在另一个UIView里面:

@interface CustomTabBarController : UIViewController {
   OutageListViewController *outageListViewController;

我的AppDelegate将此添加到窗口:

[window addSubview:[customTabBarController view]];

现在我正在尝试确定哪个单元格被点击并且didSelectRowAtIndexPath没有被调用,我有数据源和委托连接从UITableView到文件的所有者,实际上数据填充正确,因为我的“cellForRowAtIndexPath”指定,任何想法我该如何解决这个问题?

谢谢!

4 个答案:

答案 0 :(得分:4)

我解决了这个问题:忘了在我的自定义单元格xib中检查启用用户交互。太傻了!

答案 1 :(得分:3)

UITableView的以下属性是YES吗?

  • allowsSelection
  • allowsSelectionDuringEditing

Edit: 我认为保罗是对的。委托属性有一些问题。您可以检查tableView的delegate属性 - (void)viewDidLoad。如你所说,它们应该连接到xib中的FileOwner。因此以下代码不会获得nil。

- (void)viewDidLoad {
   [super viewDidLoad];

   // They should not be nil.
   NSLog(@"delegate:%@ dataSource:%@", self.tableView.delegate, self.tableView.dataSource);
}

答案 2 :(得分:2)

视图控制器可能未在任何地方连接到delegate的{​​{1}}属性。

答案 3 :(得分:0)

您可以进行快速测试...删除“大”标签,看看是否调用了didSelectRowAtIndexPath。