我不知道我应该如何正确命名标题,但我确切地知道我的问题是什么(我最终将编辑标题)。为其他类创建实例
我是Objective-C的新手,我仍然在学习。因此,我有一个包含tableView(我将称之为ClassA)和另一个具有普通UIView(ClassB)的类。我想要做的是在选择一行时让按钮出现。
+(id)sharedInstance;
@property (retain, nonatomic) IBOutlet UIButton *btn;
-(void) showBtn :(BOOL) show;
在我ClassB.m文件:
我在ClassB.h文件中创建
@synthesize btn;
static ClassB *this = nil;
(+id) sharedInstance {
if(!this) {
@synchronized (self) {
this = [[ClassB alloc] init];
}
}
return this;
}
-(void)viewDidLoad {
[self showBtn:NO] //because I only want to let it appear when a row is selected.
[self.view addSubview:btn];
}
-(void) showBtn :(BOOL) show { // I called this method in classA.
if (show == NO) {
btn.hidden = YES;
} else {
btn.hidden = NO;
}
}
所以,当我启动我的应用程序,隐藏按钮并保持隐时现我选择一行。我调试了一下,发现在ClassA中调用该方法时btn为零。经过一番研究,我发现该方法被称为另一个实例,所以在这里我的问题,我能做些什么,让它调用正确的实例?我ClassA.m的
编辑
这里部分
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
[[ClassB sharedInstance] showBtn:YES];
}
您正在将'showBtn'方法添加到视图中,这是不可能的。你可能意思是'[self.view addSubview:btn];'使用不太神秘的名字可以避免这些错误。 – vadian
你如何创建实例? – Priyal
对不起,是一个输入错误。这是btn。我在这里简化了名称,使它们更通用 –