2017-05-04 2 views
0

ClassA *a = [[ClassA alloc] initWithNibName:@"classA" bundle:nil]; a.viewInClassA.hidden = NO;Objekt aus der Klasse in anderer Klasse zuzugreifen UIView iOS Objective-c

Wenn ich diesen Code ausführen, die a.viewInClassA.hidden = NO macht keinen Effekt BITTE HELFEN

+0

Ist 'a.viewInClassA' standardmäßig ausgeblendet? und Ausgänge sind verbunden oder, wenn sie programmatisch erstellt werden, wird sie hinzugefügt, um "a" anzuzeigen? – NeverHopeless

+0

Ja versteckt in storyBoard, und Steckdose ist verbunden. –

+0

Was ist der Wert der Alpha-Eigenschaft dieser Ansicht? – NeverHopeless

Antwort

1

Dies geschieht, weil Sie eine neue Klasse erstellen, die Sie nicht verwenden. Machen Sie also die Eigenschaft dieser Klasse und übergeben Sie die Referenz der Klasse c in einer anderen Klasse und dann können Sie diese Eigenschaft ausblenden

In ClassA zum Beispiel haben Sie Tabellenansicht.

Setzen Sie dieses in ClassA.h

@property (weak, nonatomic) IBOutlet UITableView *tableview;

Von classB.h Datei Eigenschaft

@property (Strong, nonatomic) classA *classAObject;

und Form classb.m

classA machen Datei an, Tabellenansicht ausblenden möchten schreibe dies

self.classAObject.tableview.hidden = YES; 

beim Öffnen classB classA Verweis übergeben

ClassB *classB = [[ClassB alloc] initWithNibName:@"ClassB" bundle:nil]; 
classB.classAObject = self; 
[self.navigationController pushViewController:classB animated:YES]; 
0

Sie eine andere Ansicht Controller Ansichten nicht versuchen und zu manipulieren. Es ist eine Verletzung des Prinzips der Kapselung. Es ist schlechtes Design, und manchmal scheitert es, wie in deinem Fall.

Fügen Sie Ihrem ClassA View-Controller stattdessen eine Eigenschaft hinzu, die angibt, ob Ihre Ansicht ausgeblendet werden soll oder nicht. In der ViewWillAppear des classA view-Controllers liest die Eigenschaft die Eigenschaft und verwendet sie, um die Ansicht auszublenden oder anzuzeigen.

Verwandte Themen