为啥选择单元格后视图笔尖不打开?
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 然而是不必要的。以上是关于为啥选择单元格后视图笔尖不打开?的主要内容,如果未能解决你的问题,请参考以下文章