Come faccio ad aggiungere una visualizzazione personalizzata di interfaccia utente di iPhone app?
-
26-09-2019 - |
Domanda
Sono immersioni nello sviluppo iPad e sto ancora imparando come funziona il tutto insieme. Capisco come aggiungere visualizzazione standard (ad esempio pulsanti, tableviews, datepicker, ecc) per la mia UI utilizzando sia Xcode e Interface Builder, ma ora sto cercando di aggiungere un controllo calendario personalizzato (TapkuLibrary) alla finestra sinistra nella mia UISplitView applicazione che non comporta Interface Builder, giusto? Quindi, se ho una visualizzazione personalizzata (in questo caso, il TKCalendarMonthView), come faccio a livello di codice aggiungerlo a una delle viste nel mio UI (in questo caso, il RootViewController)? Qui di seguito sono alcuni frammenti di codice rilevanti dal mio progetto ...
RootViewController interfaccia
@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate> {
DetailViewController *detailViewController;
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
}
@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
- (void)insertNewObject:(id)sender;
TKCalendarMonthView interfaccia
@class TKMonthGridView,TKCalendarDayView;
@protocol TKCalendarMonthViewDelegate, TKCalendarMonthViewDataSource;
@interface TKCalendarMonthView : UIView {
id <TKCalendarMonthViewDelegate> delegate;
id <TKCalendarMonthViewDataSource> dataSource;
NSDate *currentMonth;
NSDate *selectedMonth;
NSMutableArray *deck;
UIButton *left;
NSString *monthYear;
UIButton *right;
UIImageView *shadow;
UIScrollView *scrollView;
}
@property (readonly,nonatomic) NSString *monthYear;
@property (readonly,nonatomic) NSDate *monthDate;
@property (assign,nonatomic) id <TKCalendarMonthViewDataSource> dataSource;
@property (assign,nonatomic) id <TKCalendarMonthViewDelegate> delegate;
- (id) init;
- (void) reload;
- (void) selectDate:(NSDate *)date;
Grazie in anticipo per il vostro aiuto! Ho ancora un sacco da imparare, quindi mi scuso se la domanda è assurdo in alcun modo. Ho intenzione di continuare a ricercare questa domanda in questo momento!
Soluzione
Supponendo di aver inizializzato il UIView
personalizzato, è necessario aggiungerlo come una visualizzazione secondaria di vista del viewController
.
- (void) addSubview: (UIView *) vista
Quindi, un esempio potrebbe essere se si dispone di un viewController
pianura chiamata myVC
, che ha semplicemente un UIView
bianca vuota come suo punto di vista, si potrebbe dire che questo:
CGRect customViewsFrame = CGRectMake(10, 30, 5, 2);
MyCustomView *myView = [[MyCustomView alloc] initWithFrame:customViewsFrame];
[[myVC view] addSubview:myView];
[myView release]; //Since you called "alloc" on this, you have to release it too
Poi verrà mostrata a parere della viewController
, occupando lo spazio indicato dal CGRect
.
Le coordinate del CGRect
specificare un percorso nel sistema locale del superview si sta aggiungendo a coordinare , se non sbaglio.
CGRect CGRectMake (CGFloat x, y CGFloat, larghezza CGFloat, altezza CGFloat);
Altri suggerimenti
Non ho avviato in Mac OS X, quindi non posso verificare questo completamente, ma questo è il vostro modello generale:
RootViewController.h:
...
@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate>
{
...
TKCalendarMonthView* calendarView;
...
}
...
@property (nonatomic, retain) TKCalendarMonthView* calendarView;
...
RootViewController.m:
...
@synthesize calendarView;
...
- (void)dealloc
{
...
[calendarView release];
...
}
...
- (void)viewDidLoad
{
...
TKCalendarMonthView* aCalendarView = [[TKCalendarMonthView alloc] init]; // <-- possibly initWithFrame here
self.calendarView = aCalendarView;
[aCalendarView release];
[self addSubview:self.calendarView];
...
}