Come faccio ad aggiungere una visualizzazione personalizzata di interfaccia utente di iPhone app?

StackOverflow https://stackoverflow.com/questions/2823488

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!

È stato utile?

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];
    ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top