У меня есть приложение для iPad (XCode 5.1.1, iOS 7.1, ARC и раскадровки). У меня есть UITableView
, который вызывает другие UIViews
и UITableViews
. (oServicesCell показан на изображении ниже)
Обычно, когда пользователь нажимает на строку «Службы», я отображаю еще 4_ данных. Однако бывают случаи, когда мне нужно отобразить UIPopover
, а не `UITableView.
Это код, который я использую, и он работает, но якорь исчезает, когда отображается обычный UITableView
(также отображается UIPopover
... Я вижу его перед сбоем приложения с помощью -[UIPopoverController Dealloc] достигнут, пока всплывающее окно все еще видно.).
#pragma mark prepareForSegue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segueStartTime"]) {
DateTime *dt = (DateTime *)segue.destinationViewController;
dt.whichTextField = @"oStartTime";
}
else if ([segue.identifier isEqualToString:@"segueEndTime"]) {
DateTime *dt = (DateTime *)segue.destinationViewController;
dt.whichTextField = @"oFinishTime";
}
else if ([segue.identifier isEqualToString:@"segueFromServices"]) {
SingletonServicesType *sharedInstance = [SingletonServicesType sharedServicesType];
// initialize
UIViewController* popoverContent = [[UIViewController alloc] init];
UIView *popoverView;
SZTextView *activityField;
UIPopoverController *popoverController;
if([sharedInstance.globalServicesType isEqual: @3]) { // "manual entry"?
popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 150)]; // was 216
popoverContent.preferredContentSize = CGSizeMake(250.0, 150.0);
activityField = [[SZTextView alloc] init];
activityField.frame = CGRectMake(0, 0, 250, 150);
activityField.placeholder = NSLocalizedString(@"Enter your activity for this appointment only",nil);
[activityField becomeFirstResponder];
// add it to the popover
popoverContent.title = NSLocalizedString(@"manual",nil);
[popoverView addSubview:activityField];
popoverContent.view = popoverView;
// if previous popoverController is still visible... dismiss it
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
}
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
popoverController.delegate = (id)self;
[popoverController setPopoverContentSize:CGSizeMake(250, 150) animated:NO];
// show it
[popoverController presentPopoverFromRect: oServicesCell.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
}
}
Как предотвратить передачу управления UITableView
? Все, что я хочу сделать, это отобразить UIPopover
.