我有A类,它有工具栏(按步骤创建)&同 property(nonatomic,retain)我已经在工作组A中添加了工具栏作为子视图在另一个类B.我想让A类的工具栏隐藏
怎么做?我正在使用但它不起作用?请给我 解。我正在使用Xcode 4.3.1
我在B类写这段代码
但它没有工作
ClassA *aobj= [[classA alloc] init];
[aobj.toolbar sethidden:yes];
答案 0 :(得分:1)
您的代码的问题在于您创建了ClassA
的新实例,并尝试设置隐藏在此新实例上的UIToolBar
,该实例从未显示在某处。
您需要的是一个指向屏幕上显示的ClassA
的对象。
所以尝试这样的事情:
- (id)initWithClassA:(ClassA *)classa {
if ((self = [super init])) {
[classa.toolbar sethidden:yes];
}
return self;
}
当你创建ClassB
的实例时,你使用它:
ClassB classb = [[ClassB alloc] initWithClassA:self];
如果您只想在加载ClassB
时隐藏工具栏,您可以在ClassA
创建一个ClassB.h
变量,并将其设置为您自行创建的参数初始化方法:
- (id)initWithClassA:(ClassA *)classa {
if ((self = [super init])) {
instanceOfClassA = classa;
}
return self;
}
答案 1 :(得分:1)
[[classA alloc] init];
创建了ClassA的新对象。 ClassA的这个新对象有自己的新工具栏。这不是以前创建的工具栏。
要从ClassB访问旧工具栏,您需要将ClassA的旧对象传递给ClassB。 (您也可以使用委托方法,在运行时它将决定调用哪个类)
使用initWithNibName
参数传递方法:
ClassB.h
中的
UIViewController *parentController;
-(id)initWithNibNameAndParentController:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil:(UIViewController*)controller;
在ClassB.m
-(id)initWithNibNameAndParentController:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil:(UIViewController*)controller {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
parentController = controller;
}
return self;
}
在ClassA initWithNibName
中这样:
objB = [[ClassB alloc] initWithNibNameAndParentController:@"..." bundle:nil :self];
现在从ClassB.m中隐藏您的ClassA工具栏
[((ClassA*)parentController).toolbar sethidden:yes];
答案 2 :(得分:1)
在classA.h中添加extern id context;
,然后在classA的ViewDidLoad中添加id context;
classA.m(声明全局变量的@place)和add context = self;
。然后在classB和[context.toolbar sethidden:yes];
中导入classA.h,这里你将类a的对象作为exernal varriable。这不是一个好方法。如果你需要更好的方法,请解释你创建classB的方式和位置。
答案 3 :(得分:0)
尝试设置标签栏的框架。比如将框架设置为超出屏幕范围的边界将隐藏控件。希望这会对你有所帮助。
答案 4 :(得分:0)
在viewDidLoad中:
self.navigationController.navigationBarHidden = YES;