gpt4 book ai didi

ios - 如何在具有部分和搜索的 UITableView 中编写 PrepareForSeque 代码

转载 作者:行者123 更新时间:2023-12-01 18:17:08 26 4
gpt4 key购买 nike

我构建了一个不错的 TableView,其中包含部分、搜索和右侧的字母条。

我对其进行了测试,一切似乎都很好,直到我注意到“A”之后的任何东西都无法正常工作。我发现了原因 - 在我的 PrepareForSegue 中,我传递了我在行中找到的对象,但没有注意这些部分。

我搜索了堆栈溢出,发现了一些我正在尝试做的事情,但似乎它们是在 didSelectRowAtIndexPath 中编码,没有准备好转场。而且我无法让任何代码工作。

我的第一个问题是这两种方法之间有什么关系?我正在使用 Storyboards,所以我认为我应该坚持使用 segues。但是,我如何找出要传递的员工对象呢?

任何帮助将不胜感激。

布莱恩

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
employee *dtlEmployee = [_employees objectAtIndex:indexPath.row];
self.detailViewController.detailItem = dtlEmployee;
}
else
{
// employee *dtlEmployee;
//
// int row = indexPath.row;
// int section = indexPath.section;
//
// NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:row inSection:section];
//
// [self.tableView deselectRowAtIndexPath:newIndexPath animated:NO];
// UITableViewCell *cell = [tableView cellForRowAtIndexPath:newIndexPath];
//
// dtlEmployee = [_employees objectAtIndex:newIndexPath];

}
}

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

employee *dtlEmployee;

// int row = [[self.tableView] indexPath.row];
// int section = [self.tableView indexPath.section];
// NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:row inSection:section];
// dtlEmployee = [_employees objectAtIndex:newIndexPath];
// NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow];
// NSUInteger selectedRow = selectedRowIndexPath.row;
// NSUInteger selectedSection = selectedRowIndexPath.section;
// NSArray *tmpArray = [_employees objectAtIndex:[self.tableView indexPathForSelectedRow]];
// dtlEmployee = [tmpArray objectAtIndex:selectedRowIndexPath.row];
// dtlEmployee = [tmpArray objectAtIndex:indexPath.row];
//
// dtlEmployee = [_employees objectAtIndex:selectedRowIndexPath.]
//
if (isSearching)
{
dtlEmployee = [self.filteredEmployees objectAtIndex:self.searchDisplayController.searchResultsTableView.indexPathForSelectedRow.row];
}
else
{
dtlEmployee = [_employees objectAtIndex:[self.tableView indexPathForSelectedRow].row];
}

[[segue destinationViewController] setDetailItem:dtlEmployee];

}
}

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

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [self.tableView dequeueReusableCellWithIdentifier: CellIdentifier];
//cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

if (isSearching)
{employee *thisEmployee = [self.filteredEmployees objectAtIndex:indexPath.row];
cell.textLabel.text = thisEmployee.fullName;}
else
{employee *thisEmployee = [[self.sections valueForKey:[[[self.sections allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
cell.textLabel.text = thisEmployee.fullName;}

return cell;
}

最佳答案

假设您的 segue 连接到表格 View 单元格,您的发件人在 prepareForSegue:实际上是一个细胞。 (确保使用日志记录或调试器。)

这意味着您可以向表格 View 询问与单元格匹配的索引路径,并使用与 tableView:cellForRowAtIndexPath: 中相同的逻辑。用于从路径中获取对象。

关于ios - 如何在具有部分和搜索的 UITableView 中编写 PrepareForSeque 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686865/

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