我在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”指定,任何想法我该如何解决这个问题?
谢谢!
答案 0 :(得分:4)
我解决了这个问题:忘了在我的自定义单元格xib中检查启用用户交互。太傻了!
答案 1 :(得分:3)
UITableView的以下属性是YES
吗?
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。