我不知道我應該如何正確命名標題,但我確切地知道我的問題是什麼(我最終將編輯標題)。爲其他類創建實例
我是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。我在這裏簡化了名稱,使它們更通用 –