【发布时间】:2014-05-13 20:45:03
【问题描述】:
我有一个 iPad 应用程序(XCode 5.1.1、iOS 7.1、ARC 和 Storyboards)。我有一个UITableView 调用其他UIViews 和UITableViews。 (oServicesCell 如下图所示)
通常,当用户点击“服务”行时,我会显示另一个 UITableView 的数据。但是,有时我需要显示UIPopover 而不是`UITableView。
这是我正在使用的代码,它可以工作,但是当显示正常的UITableView 时 anchor 会消失(还显示了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。
【问题讨论】:
标签: objective-c uitableview uiview ios7.1 uipopover