我可以使用NSInvocation隐藏或显示子类化的UIView而不重绘它吗?

时间:2018-08-07 01:19:47

标签: ios objective-c properties nsinvocation

我正在尝试使用调用在目标C中回调reduce并切换其`import psycopg2 as p conn = p.connect("dbname=Chicago user=postgres password=admin host=localhost ") cur = conn.cursor() cur.execute("select * from chicago_2po_4pgr") nbrows = cur.rowcount rows = cur.fetchall() for r in range(0,nbrows): id=rows[r][0] if id==15: print(r,rows[r][0],rows[r][1])` 属性。必须将消息发送到专用类`56153 15 4271616` 中的自定义视图。

出于演示目的,将从`126523 15 4271616` 调用我的UIView,与此相关的合适位置和hidden属性似乎是SquareView,但我不能判断调用是否旨在返回值,而我的示例代码给出以下错误

+ [NSInvocation _invocationWithMethodSignature:frame:]:方法签名参数不能为nil'

有人可以指出我做错了什么吗?到目前为止,我看过here herehere的示例invokerMethod对此没有任何启示。而这个link已死。


编辑

This可能是重复的问题,但答案并未解决我的问题。但是我发现another question在调用中的答案有助于产生simpler version我正在尝试做的事情,但与本文中的问题稍有不同。


到目前为止,这是我的代码

ViewController.h

UIButton.

ViewController.m

SquareView

这是调用方方法……

UIViewController.

...这是按钮方法...

NSInvocation

…这是切换视图。

SquareView.h

#import <UIKit/UIKit.h>
#import "SquareView.h"

@interface ViewController : UIViewController

@property (nonatomic, weak) UIView* square;

@end

SquareView.m

- (void)viewDidLoad {
    [super viewDidLoad];

    SquareView *square = [[SquareView alloc] initWithFrame:CGRectMake(60, 60, 100, 100)];
    [self.view addSubview:square];               // draw once only

    [self.view addSubview:[self button:CGRectMake(120, 230, 100, 50)]];


    SEL selector                = @selector(invokerMethod:);
    BOOL toggle;

    UIView *target              = _square;

    NSInvocation *invocation    = [NSInvocation invocationWithMethodSignature:[target methodSignatureForSelector:selector]];
    invocation.selector         = selector;
    invocation.target           = target;

    [invocation setArgument:&toggle atIndex:2];
    [invocation invoke];

    __weak id returnValue       = nil;
    [invocation getReturnValue:&returnValue];
}

0 个答案:

没有答案