ios - How to attach a UIPopover to a CGRect created programmatically -
i have uipopover have created several uitextfields programmatically. if 1 of uitextfields tapped, want have uidatepicker inside uipopovercontroller point uitextfield caused tap. able tag, know cgrect caused tap; problem unable have arrow of uipopovercontroller point specific rectangle.
here code (inview: self.frame incorrect; it's 1 of things tried)
if(textfield.tag == 1301 ) { // 'starttime' text field uiviewcontroller* popovercontent = [[uiviewcontroller alloc] init]; //viewcontroller uiview *popoverview = [[uiview alloc] init]; //view popoverview.backgroundcolor = [uicolor blackcolor]; uidatepicker *datepicker=[[uidatepicker alloc]init];//date picker datepicker.frame=cgrectmake(0,44,180,186); // 180,186 datepicker.datepickermode = uidatepickermodetime; [datepicker setminuteinterval:15]; [datepicker settag:1310]; [datepicker addtarget:self action:@selector(result) forcontrolevents:uicontroleventvaluechanged]; [popoverview addsubview:datepicker]; popovercontent.view = popoverview; innerpopovercontroller = [[uipopovercontroller alloc] initwithcontentviewcontroller:popovercontent]; [innerpopovercontroller setpopovercontentsize:cgsizemake(180,206) animated:no]; [innerpopovercontroller presentpopoverfromrect:cgrectmake(305, -190, 80, 35) // wrong! todo inview:self.frame permittedarrowdirections:uipopoverarrowdirectionup animated:yes]; }
the cgrectmake has same parameters (x,y,w,h) uitextfield created with. error i'm getting is:
terminating app due uncaught exception 'nsinvalidargumentexception', reason: '-[uipopovercontroller presentpopoverfromrect:inview:permittedarrowdirections:animated:]: popovers cannot presented view not have window.'
is possible, having uipopover within uipopover?
it should this:
innerpopovercontroller = [[uipopovercontroller alloc] initwithcontentviewcontroller:popovercontent]; [innerpopovercontroller setpopovercontentsize:cgsizemake(180,206) animated:no]; [innerpopovercontroller presentpopoverfromrect:cgrectmake(305, -190, 80, 35) // wrong! todo inview: subviewdata.view permittedarrowdirections:uipopoverarrowdirectionup animated:yes];
if have tag of view this:
uiview *tappedview=[subviewdata.view viewwithtag:yourtag]; innerpopovercontroller = [[uipopovercontroller alloc] initwithcontentviewcontroller:popovercontent]; [innerpopovercontroller setpopovercontentsize:cgsizemake(180,206) animated:no]; [innerpopovercontroller presentpopoverfromrect:cgrectmake(305, -190, 80, 35) // wrong! todo inview: tappedview.superview permittedarrowdirections:uipopoverarrowdirectionup animated:yes];
Comments
Post a Comment