Hinzufügen einer benutzerdefinierten Unteransicht (in einer XIB erstellt) zu einer View-Controller-Ansicht - Was mache ich falsch?
Habe ich einen Blick in eine xib (mit einer Aktivität Anzeige, eine Fortschrittsanzeige und ein label).
Dann hab ich erstellt .h/.m-Dateien:
#import <UIKit/UIKit.h>
@interface MyCustomView : UIView {
IBOutlet UIActivityIndicatorView *actIndicator;
IBOutlet UIProgressView *progressBar;
IBOutlet UILabel *statusMsg;
}
@end
#import "MyCustomView.h"
@implementation MyCustomView
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
//Initialization code
}
return self;
}
- (void)dealloc {
[super dealloc];
}
@end
In IB, habe ich den file 's owner und Sicht-Identität zu MyCustomView und schließen Sie das IBOutlet auf File' s owner
In MyViewController.m, ich habe:
- (void)viewDidLoad {
[super viewDidLoad];
UIView *subView = [[MyCustomView alloc] initWithFrame:myTableView.frame];
[subView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]];
[myTableView addSubview:subView];
[subView release];
}
Wenn ich die app starte, ist die Ansicht Hinzugefügt, aber ich kann nicht sehen, das label, den Fortschrittsbalken und die Aktivitätsanzeige.
Was mache ich falsch?
InformationsquelleAutor der Frage Sefran2 | 2011-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie laden es mithilfe der
-loadNibNamed
Methode.-initWithNibName
ist nur für UIViewControllers.Fügen Sie den folgenden code auf Ihre MyCustomView init-Methode:
Denken Sie daran, wenn Sie die Initialisierung eines Objekts aus einer Feder, ruft
- (id)initWithCoder:(NSCoder *)aDecoder
zu initialisieren, so müssen Sie überschreiben, wenn Sie die MyCustomView Objekt in der nib. Wenn Sie gerade tun es mitinitWithFrame:
ist, dann einfach überschreiben und fügen Sie den code oben. Auch, in Ihrer Spitze, stellen Sie sicher, Sie haben eine top-level-UIView, und alle anderen Elemente innerhalb dieses (macht Sie sicher, dass Ihre subviewArray hat nur einen Eintrag).Dies wird laden Sie die Aussicht von der Spitze, und fügen Sie Sie auf das Objekt, und sollte den trick tun.
InformationsquelleAutor der Antwort Ned
Ich glaube, Sie brauchen, um diese Methode zu verwenden:
Dies ist, weil Sie brauchen, um es zu übergeben .xib-Dateinamen in "nibNameOrNil".
InformationsquelleAutor der Antwort hocker
Als hocker sagte, Sie haben zu verwenden, die Methode übergeben, in der XIB-Namen (ohne die Erweiterung).
Dann müssen Sie diese Liste:
Hoffe, dass es funktioniert. Cheers.
InformationsquelleAutor der Antwort Lorenzo B