【问题标题】:View Controller call method on Sub View子视图上的视图控制器调用方法
【发布时间】:2013-08-09 02:21:58
【问题描述】:

我有一个视图控制器,里面有一个UIButton。我在那个接受签名的视图控制器中有一个UIView。有一个与UIView 关联的.h.m 文件。 UIView's .m 文件有一个擦除方法。我希望我的视图控制器中的UIButton 能够调用该擦除方法,但我不知道该怎么做。这是我正在尝试的代码:

-(IBAction)clearButtonPressed:(id)sender
{
    SignatureView *SC = [[SignatureView alloc] init];
    [SC erase];
    NSLog(@"Pressed");
}

NSLog 有效,所以我知道正在调用该操作。什么给了?

编辑:

答案有效;有点像。

NSLog(@"Erased"); 正在工作,所以我知道该按钮正在工作,但它不会擦除。这是擦除代码:

- (void)erase {
    path = [UIBezierPath bezierPath];
    [self setNeedsDisplay];
    NSLog(@"Erased");
}

【问题讨论】:

  • 您正在创建一个全新的SignatureView 实例,然后在其上调用erase,然后永远忽略它。你需要在你的视图控制器已经拥有的实例上调用erase
  • @CarlVeazey - 明白了。 UIView 在哪里初始化?
  • 代码中的某处,或 nib / 故事板中。搜索 SignatureView allocSignatureView new 之类的字符串,并查看 nib 中的视图层次结构,使用 Inspector 检查每个视图的类。
  • 检查此代码github.com/MasudShuvo/TestUIViewMethodCall,这里还设置了一个委托以获取该方法已被调用的响应。

标签: ios objective-c xcode uiview uiviewcontroller


【解决方案1】:

您所做的是创建SignatureView 的新实例并调用此实例来擦除。

如果你使用的是 nib,那么 outlet 给你的视图 ViewController 命名如 aSignatureView 并在 clearButtonPressed 调用 [aSignatureView erase];

如果通过代码添加SignatureView,则应将视图保留为aSignatureView等实例成员之一,然后调用[aSignatureView erase];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多