Ios 为其他类创建实例
我不知道我应该如何正确命名标题,但我确切地知道我的问题是什么(我最终会在以后编辑标题) 我对Objective-C还很陌生,我还在学习 因此,我有一个类,它包含一个tableView(我称之为ClassA),另一个类包含一个普通UIView(ClassB)。我想做的是,当选择一行时,让一个按钮出现 我在ClassB.h文件中创建了:Ios 为其他类创建实例,ios,objective-c,Ios,Objective C,我不知道我应该如何正确命名标题,但我确切地知道我的问题是什么(我最终会在以后编辑标题) 我对Objective-C还很陌生,我还在学习 因此,我有一个类,它包含一个tableView(我称之为ClassA),另一个类包含一个普通UIView(ClassB)。我想做的是,当选择一行时,让一个按钮出现 我在ClassB.h文件中创建了: +(id)sharedInstance; @property (retain, nonatomic) IBOutlet UIButton *btn; -(void)
+(id)sharedInstance;
@property (retain, nonatomic) IBOutlet UIButton *btn;
-(void) showBtn :(BOOL) show;
在我的ClassB.m文件中:
@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为零。经过一些研究,我发现该方法是为另一个实例调用的,所以我的问题是,我能做些什么,才能为正确的实例调用它
编辑
这是我A.m课的一部分
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
[[ClassB sharedInstance] showBtn:YES];
}
观察:ClassB是错误的UIViewController
UIViewController
具有viewDidLoad
实施建议:
该需求的正确实现是创建一个带有按钮的自定义单元格。在awakeFromNib
方法中隐藏按钮。在didselectrowatinex
中设置cell.button.ishiden=YES
仅此一项就可以满足上述要求。您正在将方法
showBtn
添加到视图中,这是不可能的。您可能是指[self.view addSubview:btn]代码>使用不太神秘的名称可以避免这些错误。您如何创建实例?抱歉,这是一个键入错误。是btn。我简化了这里的名称,使它们更通用。请粘贴类A的代码。如何在类A中访问类B。@PallaviSrikhakollu添加了类A。问题是,类A在类B的容器视图中,按钮应该在类B中