gpt4 book ai didi

ios - 未调用自定义单元格 didSelectRowAtIndexPath

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:18 25 4
gpt4 key购买 nike

我创建了一个通用的主从应用程序。我在自定义类(MasterViewController 类)中有一个 TableView 。这是一个 UITableViewController 类。使用 Storyboard,我在我的 iPhone 表格 View 中创建了一个自定义单元格。自定义单元格包含 3 个标签和 1 个图像。在 StoryBoard 中,此 TableView 数据源和委托(delegate)设置为 MasterViewController 类。我的自定义表格 View 单元格在属性检查器的“ View ”部分中具有“已启用用户交互”。在我的 MasterViewController 类中,UITableViewDataSource 方法(例如“numberOfSectionsInTableView”)工作正常。我在 TableView 和详细 View 之间定义了一个序列。当我运行应用程序并在表格 View 中选择一个单元格时,不会为 iPhone 调用 didSelectRowAtIndexPath。我的 prepareForSegue 方法执行并发生 segue。

我看了很多关于didSelectRowAtIndexPath没有被执行的帖子,但我一直没能解决我的问题。

如有任何提示,我们将不胜感激。

我的自定义单元格标识符是 ConversationCell。 segue 标识符是 ShowConversationDetails。我在 numberOfRowsInSection 的第一行使用断点进行调试,但从未输入此方法。

segue 有效,详细信息 View 显示我的带有“Hello”文本的标签。

部分代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];

//NSLog(@"Rows %lu",(unsigned long)[sectionInfo numberOfObjects]);
return [sectionInfo numberOfObjects];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"ConversationCell";

UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

[self configureCell:cell atIndexPath:indexPath];

return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {


[[self.fetchedResultsController sections] count]);


NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
self.detailViewController.detailItem = object;
}
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ShowConversationDetails"]) {

NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];

Event *e = nil;

e = [self.fetchedResultsController objectAtIndexPath:selectedIndex];

UIViewController *destinationViewController = [segue destinationViewController];
[segue.destinationViewController setLabel:@"Hello"];
}
}

主视图 Controller :这是我上面的界面;

@interface MasterViewController : UITableViewController     <NSFetchedResultsControllerDelegate,ASIHTTPRequestDelegate,UITableViewDelegate, UITableViewDataSource>
{
NSMutableArray *eventsArray;

}

这可能是解决我的问题的线索。当我将以下代码添加到 prepareForSeque

NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:selectedIndex];
NSString *messageTableID = [[object valueForKey:@"messagetableid"] description];

selectedIndex 为空,就好像在执行 prepareForSeque 时不再选择一行。

顺便说一下,为了安全起见,我从模拟器中删除了该应用程序,然后对项目进行了清理,但没有任何改变。

蒂姆

最佳答案

除了您已经提到的检查之外,这里还有一些您可能需要考虑的其他检查:

检查方法是否正是这个(字母大小写没有区别):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

检查 Controller 是否实现了UITableViewDelegate协议(protocol)

检查交互是否有效(更改选择样式选项,以便单元格在触摸事件时改变颜色)

检查您没有任何内部 View 是第一响应者并取消交互(删除单元格中的任何 View 以进行测试)

尝试以编程方式允许在表格上进行选择[tableView setAllowsSelection:YES];

关于ios - 未调用自定义单元格 didSelectRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15392106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com