0

我在许多视图控制器中单击按钮时显示自定义 UIView(类似于 UIAlertView)。因此,我已将该代码包含在 NSObject 类中。我必须将 UITableView 显示为此自定义视图的子视图,并且我的 UITableView 单元格之一包含倒数计时器。我能够显示 CustomView 和 UITableView。但是,我无法在这个 customView 中实现 NSTimer。

显示自定义视图的代码:

+(NSMutableDictionary *) printPopup:(UIView *)inputView {
    int i=20;

    UIView *myCustomView = [[UIView alloc] initWithFrame:CGRectMake(20, 100, 280, 250)];
    [myCustomView setBackgroundColor:[UIColor colorWithRed:(247/255.0) green:(239/255.0) blue:(218/255.0) alpha:1]];
    UITableView *dynamicTable=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, 280, 250) style:UITableViewStylePlain];
    dynamicTable.tag=55;
    [myCustomView addSubview:dynamicTable];    
    UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    //    [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
    [cancelButton setBackgroundImage:[UIImage imageNamed:@"Delete3.png"] forState:UIControlStateNormal];
    [cancelButton setFrame:CGRectMake(250, 0, 30, 30)];
    cancelButton.tag=i+7;
    [myCustomView addSubview:cancelButton];
    [inputView addSubview:myCustomView];
    [UIView animateWithDuration:0.4f animations:^{
        [myCustomView setAlpha:1.0f];
    }];
    NSMutableDictionary *returnedDic=[[NSMutableDictionary alloc]init];
    [returnedDic setObject:dynamicTable forKey:@"Tableview"];
    [returnedDic setObject:cancelButton forKey:@"cancelButton"];
    return returnedDic;

}

+ (void)dismissCustomView:(UIButton *)sender
{
    [UIView animateWithDuration:0.2f animations:^{
        [sender.superview setAlpha:0.0f];
    }completion:^(BOOL done){
        [sender.superview removeFromSuperview];
    }];

}

当我试图在这个 NSObject 类中实现 NSTimer 时,我收到以下错误:

instance variable accessed in class method

我必须在这个类中调用 NSTimer。有没有其他选择。

请建议。

4

2 回答 2

1

您用于定义方法的语法是类方法的语法(+返回类型之前的那个)。如果你想要实例方法,它们应该以减号为前缀-。由于您似乎需要访问实例变量,因此您的方法可能应该是实例方法。

请注意,实例方法仍然可以访问所有静态“类”变量。

于 2013-04-25T13:25:43.947 回答
0

回复:你评论。self除非您引用的方法也是类方法,否则您不能调用类方法。你的NSTimer timerWithInterval:方法违反了这一点。我猜timerFired:是实例方法?最简单的说法是两个(实例和变量方法)不能在同一个类中交织在一起。

于 2013-04-25T13:30:28.387 回答