ios - UIView and UIViewController -
i know basic stuff need understand whether understanding of correct.
so want this. want view label on when double tapped flips , loads view. on second view want uipickerview
, above have button saying back. both views of same size uipickerview
320px x 216px.
what thinking of create 2 uiview
classes named labelview , pickerview. create viewcontroller
on loadview
loads labelview
when user double taps labelview
event in labelview
class sent viewcontroller
can unload loadview
, load pickerview
.
does sound best way ? there simpler way ? unsure how route event labelview
class viewcontroller
class.
i dont know efficient way it(as language),but sure have solved ur problem. made simple program that.three classes involved here in eg baseviewcontroller (which show 2 views),labelview , pickerview (according ur requirement).
in labelview.h
@protocol labelviewdelegate -(void)didtaptwicelabelview; @end @interface labelview : uiview { id <labelviewdelegate> delegate; } @property(nonatomic,retain)id <labelviewdelegate> delegate; -(void)didtouch; @end
in labelview.m
@synthesize delegate; -(id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if (self) { uilabel* labl = [[uilabel alloc] initwithframe:cgrectmake(10, 5, frame.size.width-20,20)]; labl.text = @"some text"; [self addsubview:labl]; [labl release]; labl = nil; self.backgroundcolor = [uicolor graycolor]; uitapgesturerecognizer* ges = [[[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(didtouch)] autorelease]; ges.numberoftapsrequired = 2; [self addgesturerecognizer:ges]; } return self; } -(void)didtouch { [delegate didtaptwicelabelview]; }
//=============================================================
in pickerview.h
@protocol pickerviewdelegate -(void)didtapbackbutton; @end @interface pickerview : uiview <uipickerviewdelegate,uipickerviewdatasource>{ id <pickerviewdelegate> delegate; } @property(nonatomic,retain)id <pickerviewdelegate> delegate; @end
in pickerview.m
@implementation pickerview @synthesize delegate; -(id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if (self) { uipickerview* picker = [[uipickerview alloc] initwithframe:cgrectmake(0, 30, 320, 216)]; picker.delegate = self; picker.datasource = self; [self addsubview:picker]; [picker release]; picker = nil; self.frame = cgrectmake(frame.origin.x, frame.origin.y, 320, 250); uibutton* btn = [uibutton buttonwithtype:uibuttontyperoundedrect]; [btn setframe:cgrectmake(10, 1, 50, 27)]; [btn settitle:@"back" forstate:uicontrolstatenormal]; [btn addtarget:self action:@selector(backbutton) forcontrolevents:uicontroleventtouchupinside]; [self addsubview:btn]; } return self; } -(void)backbutton { [delegate didtapbackbutton]; }
//====================================================================
in baseviewcontroller.h
#import "labelview.h" #import "pickerview.h" @interface varticallabel : uiviewcontroller<uitextfielddelegate,pickerviewdelegate,labelviewdelegate> { pickerview* mypickerview; labelview* mylabelview; } @end
in baseviewcontroller.m
-(void)viewdidload { [super viewdidload]; mypickerview= [[pickerview alloc] initwithframe:cgrectmake(0, 50, 320, 250)]; [self.view addsubview:mypickerview]; mypickerview.delegate = self; mylabelview= [[labelview alloc] initwithframe:cgrectmake(0, 50, 320, 250)]; [self.view addsubview:mylabelview]; mylabelview.delegate = self; mypickerview.hidden = yes; } #pragma mark pickerviewdelgate -(void)didtapbackbutton { mypickerview.hidden = yes; mylabelview.hidden = no; } #pragma mark labelviewdelegate -(void)didtaptwicelabelview { mypickerview.hidden = no; mylabelview.hidden = yes; }
Comments
Post a Comment