簡體   English   中英

當用戶點擊我的應用程序中的特定行時,如何彈出一個窗口?

[英]How do i pop up a window when a user taps on the particular row in my application?

當用戶單擊表視圖中的特定字段時,如何顯示彈出窗口。 它應該彈出一個窗口,它應該顯示用戶聯系信息。 我不想在這里使用導航欄控制器。 請幫助我

我用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;
    }  
}

您可以使用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來說,它可能無法滿足您的需求。

如果要顯示較少的詳細信息,則可以使用以下選項。 在.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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM