为啥选择单元格后视图笔尖不打开?

Posted

技术标签:

【中文标题】为啥选择单元格后视图笔尖不打开?【英文标题】:Why does the view nib doesn't open after cell is selected?为什么选择单元格后视图笔尖不打开? 【发布时间】:2011-06-25 07:07:36 【问题描述】:

我创建了 nib 文件,并且正确地完成了所有连接。当我运行应用程序并选择一个单元格时,新的笔尖根本没有打开。请帮忙!

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

    //Get the selected country
NSString *selectedCountry = [[NSString alloc] initWithFormat:@"you pressed for this."];

//Initialize the detail view controller and display it.
DetailViewController *dvController = [[DetailViewController alloc] 
                                      initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];

dvController.selectedCountry = selectedCountry;
[self.navigationController pushViewController:dvController animated:YES];
[dvController release];
dvController = nil;


【问题讨论】:

查看此 SO 帖子。 ***.com/questions/1068368/…It doesn't load the view... 释放selectedCountry 否则你会泄露。它在导航控制器上吗?在pushViewController:animated: 方法之后立即尝试NSLog(@"%@ %@", self.navigationController, dvController); 并告诉我们结果。 你犯了哪个错误? dvController = nil; 也不需要,因为你之前从内存中删除了 dvController。 @Deepak,我在 DetailViewController.m 中发布了 selectedCountry 并尝试了您告诉我的内容,但没有成功! @Sherilyn,我实际上没有收到任何错误。它构建得非常好,但是当我单击单元格时,笔尖根本没有加载。我也尝试删除 dvController = nil 但它没有做任何事情。不过谢谢! 【参考方案1】:

看起来(基于没有为NSLog 语句记录的输出)您没有正确设置delegate,否则它会记录null 或某些对象值。您需要重新检查您的 IB 连接,或者如果您已通过编程方式完成,请执行 tableView.delegate = self;

【讨论】:

【参考方案2】:

试试这个:


DetailViewController *dvController = [[DetailViewController alloc] 
                                      initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];

dvController.selectedCountry = selectedCountry;
[self.navigationController pushViewController:dvController animated:YES];
dvController = nil;

【讨论】:

【参考方案3】:

希望您尝试从 listviewcontroller 加载 detailvewcontroller。而表视图是listviewcontroller的成员。

问题的可能原因。

如果您将 listviewcontroller.view 作为子视图添加到任何其他 viewcontollers 视图,那么

[self.navigationController pushViewController:dvController Animation:YES];不工作。

因此,您应该获取应用委托的实例并执行以下操作。

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];

[appDelegate .navigationController pushViewController:dvController animated:YES];

检查一下。如果这不是您的问题的原因,请告诉我 Deepak 询问您的控制台输出。

【讨论】:

【参考方案4】:

不要同时释放dvController 并将其设置为nil - 只做一个。

【讨论】:

重申一下,释放对于遵守内存管理规则是必要的。 nil-ing 然而是不必要的。

以上是关于为啥选择单元格后视图笔尖不打开?的主要内容,如果未能解决你的问题,请参考以下文章

不同笔尖的collectionView单元格宽度不会改变

从笔尖加载的 UITableView 单元格不显示背景颜色

当在 UITableView(在另一个笔尖/视图上)上按下单元格时,如何导航到笔尖(视图)?

UITableView 不重用单元格?

UICollectionView 单元格子视图不调整大小

当我开始水平滚动时,为啥我的收藏视图中的单元格被取消选择?