2011-07-05 36 views
0

我的項目中有一個UIPopoverController。Xcode PopOver - 跨文件函數的用法?

文件構成

Mainfile.h Mainfile.m Mainfile.xib(VIEW)

tableview.h tableview.m tableview.xib(表視圖)

我把我的方法爲我的主文件中的PopoverController。我的問題是我無法訪問我的方法從mainfile.m到tableview.m當我選擇表中的一行。

我的代碼

Mainfile.h

UIPopoverController *popMenu; 
@property(nonatomic,retain) IBOutlet UIPopoverController *popMenu; 
-(IBAction)showPopOverid) sender; 
-(IBAction)hidePopOver; 

Mainfile.m

#import "tableview.h" 

-(IBAction)showPopOverid) sender { 

if ([popMenu isPopoverVisible]) { 
[popMenu dismissPopoverAnimated:YES]; 
} else { 

tableview *toc = [[tocView alloc] init]; 
popMenu = [[UIPopoverController alloc] initWithContentViewController:toc]; 
[toc release]; 
[popMenu presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAn y animated:YES]; 

} 

} 

-(IBAction)hidePopOver { 
NSLog(@"hidePopOver"); 
[popMenu dismissPopoverAnimated:YES]; 
} 

在其他文件

tableview.m

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath { 

//I WANT TO ACCESS THE METHOD of hidePopOver from the mainfile so i can hide my popViewController 
// i've tried a lot but not working 
NSLog(@"hidePopOver"); 

} 

先謝謝各位傢伙

回答

0

看起來你需要使用委託來調用其他方法。 Xcode沒有全局控制器,當它們不是程序的焦點時,它可以讓你調用其他類方法。

2

我想你有一個ParentViewControllerchildViewControllerPopover彈出一些按鈕和一個'childViewController'就可以了! 對於關閉您childViewControllerPopover當選定一個的yourTablecell你可以用這樣的打擊代碼

首先在ChildViewController.h

@protocol ChildViewControllerDelegate 
    -(void)closeView; 
@end 

@interface ChildViewController : UIViewController{ 
    id<ChildViewControllerDelegate> delegate; 
} 
@property (nonatomic, assign) id<ChildViewControllerDelegate> delegate; 
@end 

!你應該調用該方法,所以把這個ChildViewController.m

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath { 
    [delegate closeView]; 
} 

而在你ParnetViewController.h

@interface ParnetViewController : UIViewController <ChildViewControllerDelegate>{ 
    UIPopoverController *childViewControllerPopover; 
} 

而對於ParnetViewController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    ChildViewController *childViewController = [[ChildViewController alloc] init]; 
    childViewController.delegate = self; 
    childViewControllerPopover = [[UIPopoverController alloc] initWithContentViewController:childViewController]; 
    [childViewController release]; 
} 

-(void)closeView{ 
    [childViewControllerPopover dismissPopoverAnimated:YES]; 
    // Do anything 
}