iPhone:隐藏工具栏

时间:2012-07-04 12:11:27

标签: iphone toolbar

我有A类,它有工具栏(按步骤创建)&同 property(nonatomic,retain)我已经在工作组A中添加了工具栏作为子视图在另一个类B.我想让A类的工具栏隐藏

怎么做?我正在使用但它不起作用?请给我 解。我正在使用Xcode 4.3.1

我在B类写这段代码

但它没有工作

ClassA *aobj= [[classA alloc] init];

[aobj.toolbar sethidden:yes];

5 个答案:

答案 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;