2012-07-10 75 views
0

我真的很努力,将变量从一个类传递到另一个类。我在this问题中回答了问题,并能够成功实现第一部分(传递数据转发)。我的问题是,当我到达第二部分(传回数据)时,我挂断了4),我需要为second.h文件声明一个接口。我已经在该.h文件中声明了一个接口:多个接口声明在一个文件中

@interface RootViewController : UITableViewController <UISplitViewControllerDelegate>{ 

而当我试图声明另一个时,我遇到了很多错误。我读了这是可能的,我只是不确定我猜的确切语法。

下面是完整的.h文件中

#import <UIKit/UIKit.h> 


@protocol SubstitutableDetailViewController 
- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem; 
- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem; 
@end 


@interface RootViewController : UITableViewController <UISplitViewControllerDelegate>{ 

    UISplitViewController *splitViewController; 

    UIPopoverController *popoverController;  
    UIBarButtonItem *rootPopoverButtonItem; 

    NSMutableArray *logMessages; 
} 

@property (nonatomic, assign) IBOutlet UISplitViewController *splitViewController; 

@property (nonatomic, retain) UIPopoverController *popoverController; 
@property (nonatomic, retain) UIBarButtonItem *rootPopoverButtonItem; 


@end 

回答

2

要添加第二个(或第三或第四)接口,只要把它用逗号

实例你说什么?我想我可以做一个。

@interface ViewController : UIViewController <DateControllerDelegate, TimeControllerDelegate, DivisionControllerDelegate, FormControllerDelegate, MemoryControllerDelegate, UIAlertViewDelegate, UITextFieldDelegate, UIActionSheetDelegate, UITableViewDelegate, UITableViewDataSource, NSFetchedResultsControllerDelegate, MFMailComposeViewControllerDelegate> { 

看起来你需要查看委托方法。这是我能想到的最简单的解释。

Delegates 

//In parent .m file: 
//assign the delegate 
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"segueName"]) 
    { 
     childController *foo = segue.destinationViewController; 
     foo.delegate = self; 
    } 

} 

//implement protocol method(s): 
- (void) methodName:(dataType*) dataName 
{ 
    //An example of what you could do if your data was an NSDate 
    buttonLabel.titleLabel.text = [[date description] substringToIndex:10]; 
} 

//In parent .h file: 
//import child header 
#import "ChildName.h" 

//indicate conformity with protocol 
@interface ParentName : UIViewController <ChildNameDelegate> 

//In child .h file 
//declare protocol 
@protocol ChildNameDelegate 
- (void) methodName:(dataType*) dataName; 
@end 

//declare delegate 
@property (unsafe_unretained, nonatomic) id<ChildNameDelegate> delegate; 


//In child .m file 
//synthesize delegate 
@synthesize delegate; 

//use method 
- (IBAction)actionName:(id)sender 
{ 
    [delegate methodName:assignedData]; 
} 

而这里的有关委托一个很好的答案这可能比我更好的方式: How do I create delegates in Objective-C?

+0

啊啊啊谢谢!我知道我一定是做错了什么,除了用逗号分隔接口之外,我尝试了所有的东西。haha – BloonsTowerDefence 2012-07-10 17:10:10

+0

他们是协议!不是接口!不要称他们:) – Mario 2012-07-10 17:35:18