最后yesterday我的 UISearchBar 工作正常。突然间,我面临着另一个问题。
当我浏览 View 时,导航栏移动到右侧,并且相同的导航栏再次出现 -> 相同的标题和导航按钮位于左侧。 TableView保持不变。 第二次单击导航按钮时,是的,返回到上一个 View 。
我得到的注释是:在意外状态下完成导航转换。导航栏 subview 树可能会损坏。
我在这个论坛浏览了相关问题,但没有帮助我。
- (void)viewDidUnload
{
[self setTableView:nil];
[super viewDidUnload];
[self setSearchController:nil];
[self setSearchBar:nil];
}
- (void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Kings *kingsObj;
if(atableView==self.tableView)
{
kingsObj=[self.kingsArr objectAtIndex:[indexPath row]];
Items *items=[[Items alloc]initWithNibName:@"Items" bundle:nil];
items.kingID=kingsObj.kingID;
items.king=kingsObj.kingName;
[self.navigationController pushViewController:items animated:YES];
[items release];
}
else
{
kingsObj=[self.filteredItems objectAtIndex:[indexPath row]];
}
Items *items=[[Items alloc]initWithNibName:@"Items" bundle:nil];
items.kingID=kingsObj.kingID;
items.king=kingsObj.kingName;
[self.navigationController pushViewController:items animated:YES];
[items release];
}
好的。 PushViewController 方法位于 didSelectRowAtIndexPath 内部。现在可能有什么问题吗?之前表现还不错。
最佳答案
该错误是因为您推送了新的 ViewController 两次。您可以像这样简化 didSelectRowAtIndexPath
代码:
- (void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Kings *kingsObj;
if (atableView==self.tableView) {
kingsObj = [self.kingsArr objectAtIndex:[indexPath row]];
} else {
kingsObj = [self.filteredItems objectAtIndex:[indexPath row]];
}
Items *items=[[Items alloc]initWithNibName:@"Items" bundle:nil];
items.kingID=kingsObj.kingID;
items.king=kingsObj.kingName;
[self.navigationController pushViewController:items animated:YES];
[items release];
}
关于objective-c - 非 rootViewController View 中的 NavigationController 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752011/