我创建了一个通用的主从应用程序。我在自定义类(MasterViewController 类)中有一个表格视图。这是一个 UITableViewController 类。使用 Storyboard,我在我的 iPhone 表格视图中创建了一个自定义单元格。自定义单元格包含 3 个标签和 1 个图像。在 StoryBoard 中,此表视图数据源和委托设置为 MasterViewController 类。我的自定义表格视图单元格在属性检查器的“视图”部分中具有“已启用用户交互”。在我的 MasterViewController 类中,诸如“numberOfSectionsInTableView”之类的 UITableViewDataSource 方法运行良好。我在表格视图和详细视图之间定义了一个序列。当我运行应用程序并在表格视图中选择一个单元格时,不会为 iPhone 调用 didSelectRowAtIndexPath。
我已经阅读了很多关于没有执行 didSelectRowAtIndexPath 的帖子,但我无法解决我的问题。
任何提示将不胜感激。
我的自定义单元格标识符是 ConversationCell。segue 标识符是 ShowConversationDetails。我在 numberOfRowsInSection 的第一行使用断点进行调试,并且从未输入过此方法。
segue 有效,详细视图显示带有“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"];
}
}
MASTERVIEWCONTROLLER:这是我上面的界面;
@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 时不再选择行一样。
顺便说一句,为了安全起见,我从模拟器中删除了该应用程序,然后对项目进行了清理,但没有任何改变。
蒂姆