我不知道我应该如何正确地命名标题,但我确切地知道我的问题是什么(我最后会编辑标题)。
我对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为nil。经过一些研究,我发现该方法被另一个实例调用,所以在这里我的问题是,我能做些什么来为正确的实例调用它?
修改
这是我的ClassA.m
的一部分- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
[[ClassB sharedInstance] showBtn:YES];
}
答案 0 :(得分:0)
观察: ClassB是一个错误的UIViewController。 UIViewControllers
有viewDidLoad
。
实施建议:
该要求的正确实现是您使用按钮创建自定义单元格。隐藏awakeFromNib
方法中的按钮。在didSelectRowAtIndex
中设置cell.button.isHidden = YES
。
这应该单独处理上述要求。