我有類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都是視圖? –