我创建了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;
}
答案 0 :(得分:3)
看起来(基于没有记录NSLog
语句的输出)您没有正确设置delegate
,因为它会以其他方式记录null
或某些对象价值。您需要重新检查您的IB连接,或者如果您已通过编程方式完成,请执行tableView.delegate = self;
答案 1 :(得分:0)
试试这个:
DetailViewController *dvController = [[DetailViewController alloc]
initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
dvController.selectedCountry = selectedCountry;
[self.navigationController pushViewController:dvController animated:YES];
dvController = nil;
答案 2 :(得分:0)
不要同时释放dvController
并将其设置为nil
- 只做一个。
答案 3 :(得分:0)
希望您尝试从listviewcontroller加载detailvewcontroller。表视图是listviewcontroller的成员。
问题的可能原因。
如果要将listviewcontroller.view作为子视图添加到任何其他viewcontollers视图,那么
[self.navigationController pushViewController:dvController animated:YES];不工作。
因此,您应该获得应用委托的实例并执行以下操作。
YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate .navigationController pushViewController:dvController animated:YES];
检查一下。如果这不是您的问题的原因,那么请让我知道Deepak问你的控制台输出。