0
WePopovercontroller
을 앱에 구현하는 과정에 있는데 uislider를 구현하는 방법에 대한 질문이 있습니다. UIView
에 슬라이더를 표시하고 슬라이더를 움직 였지만 해당 뷰에서 레이블 값을 설정하는 방법을 알 수없는 경우 조치를 취할 수 있습니다. 여기WePopoverControler에서 UISlider 컨트롤로 레이블의 값 변경
-(void)popoverSliderMoved:(UISlider *) sender{
NSLog(@"slider %f",sender.value);
}
-(IBAction)showSettingsMenu:(UIButton *)sender{
if(!self.popoverSettingsController) {
// Create a label and button for the popover
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
[label setText:@"Bookmark it!"];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setTextAlignment:UITextAlignmentCenter];
UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 45, 100, 40)];
[slider addTarget:self action:@selector(popoverSliderMoved:) forControlEvents:UIControlEventValueChanged];
UIFont *font = [UIFont boldSystemFontOfSize:20];
[label setFont:font];
CGSize size = [label.text sizeWithFont:font];
CGRect frame = CGRectMake(0, 0, size.width + 10, size.height + 10); // add a bit of a border around the text
label.frame = frame;
UIButton *button = [[UIButton alloc] initWithFrame:label.frame];
[button addSubview:label];
[button addTarget:self action:@selector(popoverButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
UIViewController *viewCon = [[UIViewController alloc] init];
[viewCon.view addSubview:slider];
[viewCon.view addSubview:button];
CGRect popOverFrm = CGRectMake(0, 0, frame.size.width + slider.frame.size.width, frame.size.height + slider.frame.size.height);
viewCon.contentSizeForViewInPopover = popOverFrm.size;//CGSizeMake(100, 36);
NSLog(@"Label Frame: %@", NSStringFromCGRect(label.frame));
NSLog(@"Popover size: %@", NSStringFromCGSize(viewCon.contentSizeForViewInPopover));
NSLog(@"ViewCon: %@", NSStringFromCGRect(viewCon.view.frame));
self.popoverSettingsController = [[WEPopoverController alloc] initWithContentViewController:viewCon];
//[self.popoverSettingsController setDelegate:self];
}
if([self.popoverSettingsController isPopoverVisible]) {
[self.popoverSettingsController dismissPopoverAnimated:YES];
// [navPopover setDelegate:nil];
self.popoverSettingsController = nil;
} else {
[self.popoverSettingsController presentPopoverFromRect:CGRectMake(sender.frame.size.width, 0, 200, 57)
inView:self.navigationController.view
permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown
animated:YES];
}
}
내가 레이블을 설정하려면이의 ViewController이 경우 대리인 또는 속성을 사용할 필요가 코드의 일부이다.
감사합니다 !!!
답장을 보내 주셔서 감사합니다. 나는 그것을 속성과 함께 작동하도록 만들었지 만 속성을 사용하고 그것으로 uiview를 생성하는 코드가 깨끗한 지 잘 모르겠습니다. @ElDeveloper가 내 게시물 수정에 감사드립니다. 복사 붙여 넣기가 코드 창에 코드를 넣지 않은 이유를 알 수 없습니다. 나는 기능을 분리해야한다고 생각한다 – Yan
는 코멘트이어야한다 –
나는 동의한다. 그러나 나는 그 특권이 아직 없다. –