¿Cómo agrego una vista personalizada de la interfaz de usuario de aplicación para el iPhone?

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

Pregunta

Estoy de sumergirse en el desarrollo IPAD y todavía estoy aprendiendo cómo funciona todo en conjunto. Entiendo cómo agregar vista estándar (es decir, los botones, tableviews, selector de fechas, etc.) a la interfaz de usuario utilizando tanto Xcode y Interface Builder, pero ahora estoy tratando de agregar un control de calendario personalizado (TapkuLibrary) a la ventana de la izquierda en mi UISplitView aplicación que no implique el Interface Builder, ¿verdad? Así que si tengo una vista personalizada (en este caso, el TKCalendarMonthView), ¿cómo mediante programación añadirlo a una de las vistas en mi interfaz de usuario (en este caso, el RootViewController)? A continuación se presentan algunos fragmentos de código relevantes de mi proyecto ...

RootViewController interfaz

@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 interfaz

@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;

Gracias de antemano por toda su ayuda! Todavía tengo una tonelada de aprender, así que pido disculpas si la pregunta es absurda de ninguna manera. Voy a seguir investigando esta cuestión en este momento!

¿Fue útil?

Solución

Suponiendo que ha inicializado el UIView personalizada, es necesario agregarlo como subvista de vista del viewController.

- (void) addSubview: (UIView *) Ver

Así que un ejemplo sería si usted tiene un viewController llanura llamada myVC, que tiene simplemente una UIView blanca en blanco como su punto de vista, se diría esto:

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

A continuación, se mostrará en vista de la viewController, ocupando el espacio indicado por el CGRect.

Las coordenadas del CGRect especificar una ubicación en el sistema local de la supervista va a agregar a coordinar , si no me equivoco.

CGRect CGRectMake (CGFloat x, CGFloat y, ancho CGFloat, altura CGFloat);

Otros consejos

No estoy arrancado en Mac OS X, así que no puedo verificar esto por completo, pero este es el patrón general:

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];
    ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top