【问题标题】:How do i pop up a window when a user taps on the particular row in my application?当用户点击我的应用程序中的特定行时,我如何弹出一个窗口?
【发布时间】:2012-04-16 00:58:48
【问题描述】:

当用户点击我的表格视图中的特定字段时如何显示一个弹出窗口。 它应该弹出一个窗口,它应该显示用户联系信息。 我不想在这里使用导航栏控制器。 请帮帮我

【问题讨论】:

  • 你要创建 UIPopOverViewController
  • 如果你想在 iPhone 上使用它,那么 UIPopOverController 将无济于事。
  • @priyanka 是的,你是对的。他需要了解 iPhone 还是 iPad?
  • 是的,我正在为 iphone 创建这个应用程序
  • @Cocoa Matters but tag is specified this post is for iPhone.

标签: iphone ios uitableview iphone-sdk-3.0


【解决方案1】:

如果您想显示较少的详细信息,则可以使用以下选项。 在 .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;

【讨论】:

  • vSortOption.center = CGPointMake(alertWindow.frame.size.width/2, alertWindow.frame.size.height/2);你能解释一下这个语句到底是做什么的吗??
  • vSortOption // 是我在 xib 中创建并使用 IBOutlet 附加的自定义视图。 Ex IBOutlet UIView *vSortOption;
【解决方案2】:

您可以使用presentModalViewController 方法显示您的新视图控制器。我是这样使用的:

- (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,它可能无法满足您的目的。 p>

【讨论】:

    【解决方案3】:

    我已经以 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;
        }  
    }
    

    【讨论】:

    • 你能在不创建视图控制器弹出窗口的情况下帮助我吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2012-08-28
    相关资源
    最近更新 更多