Ios 为其他类创建实例

Ios 为其他类创建实例,ios,objective-c,Ios,Objective C,我不知道我应该如何正确命名标题,但我确切地知道我的问题是什么(我最终会在以后编辑标题) 我对Objective-C还很陌生,我还在学习 因此,我有一个类,它包含一个tableView(我称之为ClassA),另一个类包含一个普通UIView(ClassB)。我想做的是,当选择一行时,让一个按钮出现 我在ClassB.h文件中创建了: +(id)sharedInstance; @property (retain, nonatomic) IBOutlet UIButton *btn; -(void)

我不知道我应该如何正确命名标题,但我确切地知道我的问题是什么(我最终会在以后编辑标题)

我对Objective-C还很陌生,我还在学习

因此,我有一个类,它包含一个tableView(我称之为ClassA),另一个类包含一个普通UIView(ClassB)。我想做的是,当选择一行时,让一个按钮出现

我在ClassB.h文件中创建了:

+(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中