2012年11月17日 星期六

Popover在iPad上的使用(一)

一個popover的UIViewController與主UIViewController之間的資料傳輸

實作如下

1.  開啓一個專案

2. 在Storyboard上加上一個新的UIViewController作為popover,並在兩邊加上一個TextFiled作為資料輸入,然後用button加segue連結成popover顯示,popover segue的ID設為popSeg

3. 加上新的檔案給popover的UIViewController使用


4. 在mainViewController.h加上Button及TextField的註冊
#import <UIKit/UIKit.h>
#import "popViewController.h"

@interface mainViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *popButton;

@property (weak, nonatomic) IBOutlet UITextField *mainTextField;


@end

5. 在mainViewController.m加上控制傳輸的程式碼
#import "mainViewController.h"

@interface mainViewController ()

@end

@implementation mainViewController

@synthesize popButton, mainTextField;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
   
    if([segue.identifier isEqualToString:@"popSeg"]){
        UIStoryboardPopoverSegue *popoverSegue =(UIStoryboardPopoverSegue *)segue;
        popoverSegue.popoverController.delegate = self; //popover 資料傳輸的重點設定
       
        popViewController *editorVC = segue.destinationViewController;
        editorVC.dataTextField.text = self.mainTextField.text;
    }
   
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.mainTextField.text = ((popViewController *) popoverController.contentViewController).dataTextField.text;

}


@end


6. 在popViewController.h加上TextField的註冊,popViewController.m不用加任何程式碼
#import <UIKit/UIKit.h>
#import "mainViewController.h"
@interface popViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *dataTextField;

@end


7. 執行結果




沒有留言: