我有类A的工具栏(创建progog)&与 属性(非原子,保留)我已经添加该工具栏作为A类中的子视图在另一个类B中我想使类A隐藏iPhone:隐藏工具栏
如何做到这一点?我正在使用,但它不工作?请给我 解决方案。我使用的Xcode 4.3.1
我写在B类
这个代码,但它不工作
ClassA *aobj= [[classA alloc] init];
[aobj.toolbar sethidden:yes];
我有类A的工具栏(创建progog)&与 属性(非原子,保留)我已经添加该工具栏作为A类中的子视图在另一个类B中我想使类A隐藏iPhone:隐藏工具栏
如何做到这一点?我正在使用,但它不工作?请给我 解决方案。我使用的Xcode 4.3.1
我写在B类
这个代码,但它不工作
ClassA *aobj= [[classA alloc] init];
[aobj.toolbar sethidden:yes];
添加extern id context;
在classA.h然后CLASSA的viewDidLoad中添加id context;
classA.m(@place其中全球varriable声明)和add context = self;
。然后在classB和[context.toolbar sethidden:yes];
中导入classA.h,这里您将类a的对象作为exernal varriable.This不是一个好方法。如果您需要更好的方法,请解释如何以及在哪里创建classB。
尝试设置的TabBar的框架。比如将框架设置为超出屏幕范围将隐藏控件。希望这会帮助你。
:感谢显示我的问题 兴趣有了这些答案,我解决我的问题的帮助 –
你的代码的问题是你创建了一个新的实例ClassA
,并试图设置UIToolBar
隐藏在这个从未显示在某个地方的新实例。
你需要的是一个指向屏幕上显示的ClassA
的对象。
因此,尝试这样的事:
- (id)initWithClassA:(ClassA *)classa {
if ((self = [super init])) {
[classa.toolbar sethidden:yes];
}
return self;
}
而当你做的ClassB
实例使用此:
如果你想只有当ClassB
没有隐藏工具栏你可以创建一个变量ClassA
在ClassB.h
并将其设置为你自己创建的i中提供的参数nit-method:
- (id)initWithClassA:(ClassA *)classa {
if ((self = [super init])) {
instanceOfClassA = classa;
}
return self;
}
我也通情达理的问题,但我不能够使用你的代码 到底在哪使用此代码 作为类已经一个 - ( id)initWithNibName方法 –
我认为你在'ClassA'某处初始化'ClassB',然后你将显示'ClassB'。现在,不是使用'[[ClassB alloc] initWithNibName:@“...”]''使用'[[ClassB alloc] initWithClassA:self]'。你所做的就是将'self'(self是原来的'ClassA'-Object)传递给'ClassB',它存储在那里,你可以用它来隐藏工具栏。一个类是一种描述符,你的对象是怎么样的,对象是基于你的类,并在内存中有特定的位置,如果你创建一个新的实例,你会在内存中获得一个新的位置,你明白吗? –
非常感谢您的宝贵回答,它确实帮助我解决了我的问题。你的回答正确地解释了我出错的地方,应该怎么办才能解决问题 再次感谢 –
[[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的
现在。米隐藏工具栏的ClassA你的愿望
[((ClassA*)parentController).toolbar sethidden:yes];
谢谢你的宝贵答案很多,它确实帮助我解决了我的问题。你的回答正确地解释了我犯的错误 再次感谢 –
在viewDidLoad中:
self.navigationController.navigationBarHidden = YES;
通过类A的对象让它使用委托方法是对B和使[a.toolbar sethidden:YES]; –
发布实际的代码。 –
假设ClassA和ClassB都是视图? –