当我选择表格行时,没有任何反应。它没有转到ContentController,当我想将它链接到UILabel
时,我找不到我在ContentController.h上声明的resultLabel
。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ContentController *detailview = [[ContentController alloc] initWithNibName:@"ContentController" bundle:nil];
detailview.detailString = [NSString stringWithFormat:@"%d",indexPath.row];
[self.navigationController pushViewController:detailview animated:YES];
[detailview release];
}
ContentController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
resultLabel.text = self.detailString;
}
答案 0 :(得分:15)
这可能是因为您没有将表格视图属性设置为委托&数据源:
tableview.delegate=self;
tableview.datasource=self;
或在xib中设置其属性是另一种选择
答案 1 :(得分:3)
可以是方法cellForRowAtIndexPath
中的状态:
cell = [self tableCellWithHeight:height clickable:NO withArrowAccessory:NO];
if clickable == NO
然后didSelectRowAtIndexPath
方法永远不会调用该单元格。
答案 2 :(得分:2)
要检查的另一件事是确保原型单元格及其选择模式或选择样式。
转到界面构建器>>>右侧的实用窗口>>>属性检查器>>>查找选择下拉列表。
在我关注的苹果教程中,它要求您将其设置为none,使其看起来像didSelect'委托没有触发。将选择模式设置为none,有效地扼杀了这种能力。我将其更改为单选,这一切都开始重新开始了。
答案 3 :(得分:0)
检查是否正在使用断点的didSelectRowAtIndexPath内部进行控制。如果不是只检查是否已设置UITableView委托。
答案 4 :(得分:0)
NSString *detailString;
@property (nonatomic, retain) detailString;
ContentController.m
@synthesize detailString;
在你班上有桌面视图的地方。设置表视图委托& datasource to self(在xib中为文件所有者)。
答案 5 :(得分:0)
以下是在UITableview的界面构建器中设置数据源和委托的图像 这对于下面触摸的方法是必要的。
...
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.myAlphabet count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [self.myAlphabet objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//method for getting text (can be changed to push views)
NSString*mystring;
mystring = [self.tableView cellForRowAtIndexPath:indexPath].textLabel.text;
NSLog(@"%@",mystring);
}
答案 6 :(得分:0)
创建单元格时(在cellForRowAtIndexPath上)应注意:
userInteractionEnabled属性 确定是否可以选择单元格(单击时应该-didSelectRowAtIndexPath将调用)。
if (!isClickable) {
cell.userInteractionEnabled = NO;
}
selectionStyle属性: 确定单击时是否显示所选的背景视图。
cell.selectionStyle = isClickable ? UITableViewCellSelectionStyleBlue : UITableViewCellSelectionStyleNone;
答案 7 :(得分:0)
嗯,我有一些不同的情况,我在HJManaged
单元格中有UITableView
图片,而HJManaged
图片在其delegate
中有自己的点按方法,所以当我点按表格视图而不是didSelectRowAtIndexPath
,委托调用HJManaged
图片的点击方法。
所以我找到了解决方案,我回到了UITableView
Cell,并且取消选中HJManaged
图片的用户互动功能。
答案 8 :(得分:0)
检查您是否实施此方法
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath: (NSIndexPath *)indexPath
{
return NO;
}
禁用单元格选择
答案 9 :(得分:0)
这种情况可能是您没有添加表视图委托和数据源。请确保并在视图中添加这两行并加载方法
if ( ( @start < @to ) and ( @end > @from ) )
return @to - @start
答案 10 :(得分:0)
我的情况是我忘了设置tableView的委托属性。也许你应该将tableView委托连接到当前的视图控制器。