首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITextFieldDelegate导致异常

UITextFieldDelegate导致异常
EN

Stack Overflow用户
提问于 2013-01-06 11:32:36
回答 3查看 125关注 0票数 0

简单的案子。我想要创建一个UIViewController,显示一个简单UITextField的输入并对其做出反应。

  1. 我创建了一个UIViewController,包括xib文件。
  2. 在Interface中,我添加了一个视图和一个包含UITextField的视图。
  3. 文件的所有者设置为包含逻辑"CardViewController“的相应类名。
  4. “文件所有者”指向“视图”视图。
  5. 文本字段使用文件的所有者作为委托

看起来像这样..。

视图正在正确显示,但一旦我点击textfield,应用程序就会崩溃,异常为“EXC_BAD_ACCESS.”。

我的猜测是,委派代表有问题,但我很难找到这个问题。有什么想法吗?我错过了什么?

进一步的调查结果。当我在中直接实例化这个视图控制器时,UITextField的委托实际上是有效的!

但是,我计划首先创建一个"BoardViewController“类的实例,然后创建"CardViewController”对象。拥有这样的嵌套会导致委托失败。

作为参考。在我的应用程序代表中:

代码语言:javascript
复制
BoardViewController *bvc = [[BoardViewController alloc] init];
[self.window setRootViewController:bvc];

在理事会类中,我有一个“添加”按钮,它触发创建CardViewControllers

代码语言:javascript
复制
-(void) addCard:(id)touchEvent{
    NSLog(@"<Board> Add");
    CardViewController *cvc = [[CardViewController alloc]init];
    [self.view addSubview:cvc.view];
}

然后,CardViewController看上去就像前面提到的,在xib中设置委托。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-06 16:07:49

看来我找到了解决办法。不只是将CardViewController的视图添加为子视图,我还需要将其添加为ChildViewController。

在父BoardViewController中

代码语言:javascript
复制
-(void) addCard:(id)touchEvent{
    CardViewController *cvc = [[CardViewController alloc]init];
    [self addChildViewController:cvc];
    [self.view addSubview:cvc.view];
}

然后委托调用就能工作了。耶。

票数 0
EN

Stack Overflow用户

发布于 2013-01-06 11:37:57

看起来您的CardViewController没有初始化。你认为它应该建在哪里?

票数 0
EN

Stack Overflow用户

发布于 2013-01-06 12:01:54

您需要正确地初始化视图控制器。

代码语言:javascript
复制
CardViewController *objCardView = [[CardViewController alloc]initWithNibName:@"CardViewController" bundle:nil];

[self.view addSubview:objCardView.view];

如果这是有效的,那么检查这个东西:

代码语言:javascript
复制
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization}

    }
    return self;
}

您的类的此方法正在工作,然后检查是否为ViewDidLoad。

然后,还需要检查您是否正确地实现了textField代理。使用属性集成您的textField并创建连接文件所有者。

使用断点调试代码。我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14181663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档