我在点击许多视图控制器中的按钮时显示自定义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。有没有其他选择。
请建议。
答案 0 :(得分:1)
用于定义方法的语法是类方法(返回类型之前的小+
)。如果您想要实例方法,则应使用减号-
作为前缀。由于您似乎需要访问实例变量,因此您的方法可能应该是实例方法。
请注意,实例方法仍然可以访问所有静态“类”变量。
答案 1 :(得分:0)
回复:你评论。您不能在类方法中调用self
,除非您引用的方法也是类方法。您的NSTimer timerWithInterval:
方法违反了该方法。我猜timerFired:
是一个实例方法?最简单的说法就是两个(实例和变量方法)不能在同一个类中交织在一起。