当用户点击表格视图中的特定字段时,如何显示弹出窗口。 它应该弹出一个窗口,它应该显示用户联系信息。 我不想在这里使用导航栏控制器。 请帮助我
答案 0 :(得分:1)
我已经编写了带有DatePicker的UIPopOverController代码作为示例。请参考此示例并根据需要进行设置
-(IBAction)tDriveBtnPressed:(id)sender
{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
txtDate.text = [NSString stringWithFormat:@"%@",
[df stringFromDate:[NSDate date]]];
[df release];
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];
pickerToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDone:)];
[barItems addObject:doneBtn];
[doneBtn release];
[pickerToolbar setItems:barItems animated:YES];
[barItems release];
datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDate;
CGRect pickerRect = datePicker.bounds;
datePicker.bounds = pickerRect;
UIViewController* popoverContent = [[UIViewController alloc] init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 344)];
popoverView.backgroundColor = [UIColor whiteColor];
datePicker.frame = CGRectMake(0, 44, 320, 300);
[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
[popoverView addSubview:pickerToolbar];
[popoverView addSubview:datePicker];
popoverContent.view = popoverView;
//resize the popover view shown
//in the current view to the view's size
popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 244);
//create a popover controller
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
CGRect popoverRect = [self.view convertRect:[tDriveBtn frame]
fromView:[tDriveBtn superview]];
popoverRect.size.width = MIN(popoverRect.size.width, 100) ;
popoverRect.origin.x = popoverRect.origin.x;
// popoverRect.size.height = ;
[popoverController
presentPopoverFromRect:popoverRect
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
//release the popover content
[popoverView release];
[popoverContent release];
}
-(void)dateChange:(id)sender
{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
txtDate.text= [NSString stringWithFormat:@"%@",
[df stringFromDate:datePicker.date]];
[df release];
}
- (void)pickerDone:(id)sender
{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
txtDate.text= [NSString stringWithFormat:@"%@",
[df stringFromDate:datePicker.date]];
[df release];
if (popoverController != nil) {
[popoverController dismissPopoverAnimated:YES];
self.popoverController=nil;
}
}
答案 1 :(得分:1)
您可以使用presentModalViewController
方法显示新的viewController。我这样使用它:
- (IBAction)addNewBuidling:(id)sender
{
NewBuilding *new=[[NewBuilding alloc]initWithNibName:@"NewBuilding" bundle:nil];
new.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
new.modalPresentationStyle=UIModalPresentationFormSheet;
[self.navigationController presentModalViewController:new animated:YES];
new.view.superview.frame = CGRectMake(0, 0, 357 ,117);//it's important to do this after. Take a frame size exactly of your new viewController's size.
new.view.superview.center = self.view.center;
[new release];
}
这就是我的NewBuilding
viewController将出现在屏幕上的方式。
编辑1:
在presentModalViewController
参考文献中写道:“在iPhone和iPod touch设备上,modalViewController的视图始终全屏显示。”因此对于iPhone来说,它可能无法满足您的需求。
答案 2 :(得分:0)
如果要显示较少的详细信息,则可以使用以下选项。 在.h文件中声明下面的代码
UIWindow *alertWindow;
在.m文件中写下以下代码。
alertWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // you must release the window somewhere, when you do not need it anymore
alertWindow.windowLevel = UIWindowLevelAlert; // puts it above the status bar
alertWindow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
/*CUSTOM VIEW obj*/.center = CGPointMake(alertWindow.frame.size.width/2, alertWindow.frame.size.height/2);
[alertWindow addSubview:/*PUT YOUR CUSTOM VIEW HERE*/];
[alertWindow setHidden:NO];
此代码显示自定义视图,如UIAlertView。
您将上面的代码放在UITableView Delegate方法中。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}
隐藏窗口
[alertWindow setHidden:YES];
[alertWindow release]; alertWindow = nil;