Как открыть окно, когда пользователь нажимает на конкретную строку в моем приложении? - PullRequest
0 голосов
/ 02 апреля 2012

Как показать всплывающее окно, когда пользователь нажимает на определенное поле в моем табличном представлении. Должно появиться окно и должно отображаться контактная информация пользователя. Я не хочу использовать контроллер навигационной панели здесь. Пожалуйста, помогите мне

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Вы можете отобразить ваш новый viewController, используя метод 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 будет отображаться на экране.

enter image description here

Редактировать 1:

В этой записанной в presentModalViewController ссылке: « На устройствах iPhone и iPod touch представление modalViewController всегда отображается в полноэкранном режиме. », поэтому для iPhone это может не подойти.твоя цель.

1 голос
/ 02 апреля 2012

Я написал код UIPopOverController с DatePicker в качестве примера для вас. просто обратитесь к этому примеру и установите в соответствии с вашими потребностями

   -(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;
    }  
}
0 голосов
/ 02 апреля 2012

, если вы хотите отображать меньше деталей, вы можете использовать следующую опцию. объявите ниже код в .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.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

Для скрытия окна

[alertWindow setHidden:YES];
[alertWindow release]; alertWindow = nil;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...