首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从一个子视图调用ViewController类中的方法?

如何从一个子视图调用ViewController类中的方法?
EN

Stack Overflow用户
提问于 2012-03-07 09:38:43
回答 2查看 141关注 0票数 0

我想在不使用文本字段的情况下拉出键盘,所以我继承了UIToolbar并使其符合UIKeyInput协议。基于我使用简单NSLog打印输出的测试,我成功地读取了来自用户的键输入。我的问题是,我需要输入到键盘中的文本来更新表视图,该表视图由与我的自定义工具栏相同的视图控制器管理。基本上我的问题是:如果我的update方法在我的自定义工具栏类中,我如何告诉它更新表视图?或者,如果我的update方法在我的视图控制器类中,我如何确保它在每次按下一个键时都被调用?

我尝试让工具栏在按下某个键时发送通知,如下所示:

代码语言:javascript
运行
复制
- (void)insertText:(NSString *)text {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"keyPressed" object:self];

,然后用视图控制器监听它。

代码语言:javascript
运行
复制
[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(updateForKeyPressed:) name:@"keyPressed" object:nil];

..。

代码语言:javascript
运行
复制
- (void)updateForKeyPressed:(NSNotification *)note {
   [self update];
}

这并不管用,但这并不奇怪,因为我是从一篇在线文章中得到这个想法的,而且我相当确定我做错了。在这一点上,我几乎是一团糟,如果有人能给我指出正确的方向,那就太好了。一如既往,任何帮助都是非常感谢的。如果任何人想看到更多我的代码,请让我知道,我可以把它张贴出来。

EN

回答 2

Stack Overflow用户

发布于 2012-03-07 09:54:36

使用通知应该可以很好地工作。你做了什么来调试你的代码?您确定正在发布通知吗?是否确定视图控制器已向通知中心注册?您确定-updateForKeyPressed:没有被调用吗?

委派是另一个更容易设置和调试的选项。让视图控制器将自身设置为工具栏的代理,并让工具栏在其文本更改时向其代理发送一条消息,就像UITextView所做的那样。

要记住的主要思想是,视图不应该关心视图控制器。工具栏可能会向视图控制器发送消息,因为视图控制器恰好是它的委托,但它不应该依赖于它的委托是视图控制器这一事实。

票数 2
EN

Stack Overflow用户

发布于 2012-03-07 09:55:37

您应该能够使视图控制器符合uikeyinput,然后将工具栏的委托设置为视图控制器

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

https://stackoverflow.com/questions/9594616

复制
相关文章

相似问题

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