简单的案子。我想要创建一个UIViewController,显示一个简单UITextField的输入并对其做出反应。
看起来像这样..。

视图正在正确显示,但一旦我点击textfield,应用程序就会崩溃,异常为“EXC_BAD_ACCESS.”。
我的猜测是,委派代表有问题,但我很难找到这个问题。有什么想法吗?我错过了什么?
进一步的调查结果。当我在中直接实例化这个视图控制器时,UITextField的委托实际上是有效的!!
但是,我计划首先创建一个"BoardViewController“类的实例,然后创建"CardViewController”对象。拥有这样的嵌套会导致委托失败。
作为参考。在我的应用程序代表中:
BoardViewController *bvc = [[BoardViewController alloc] init];
[self.window setRootViewController:bvc];在理事会类中,我有一个“添加”按钮,它触发创建CardViewControllers
-(void) addCard:(id)touchEvent{
NSLog(@"<Board> Add");
CardViewController *cvc = [[CardViewController alloc]init];
[self.view addSubview:cvc.view];
}然后,CardViewController看上去就像前面提到的,在xib中设置委托。
发布于 2013-01-06 16:07:49
看来我找到了解决办法。不只是将CardViewController的视图添加为子视图,我还需要将其添加为ChildViewController。
在父BoardViewController中
-(void) addCard:(id)touchEvent{
CardViewController *cvc = [[CardViewController alloc]init];
[self addChildViewController:cvc];
[self.view addSubview:cvc.view];
}然后委托调用就能工作了。耶。
发布于 2013-01-06 11:37:57
看起来您的CardViewController没有初始化。你认为它应该建在哪里?
发布于 2013-01-06 12:01:54
您需要正确地初始化视图控制器。
CardViewController *objCardView = [[CardViewController alloc]initWithNibName:@"CardViewController" bundle:nil];
[self.view addSubview:objCardView.view];如果这是有效的,那么检查这个东西:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization}
}
return self;
}您的类的此方法正在工作,然后检查是否为ViewDidLoad。
然后,还需要检查您是否正确地实现了textField代理。使用属性集成您的textField并创建连接文件所有者。
使用断点调试代码。我希望这能帮到你。
https://stackoverflow.com/questions/14181663
复制相似问题