0

あるクラスから別のクラスに変数を渡すのに本当に苦労しています。私はこの質問の答えに従っていて、最初の部分(データ転送)を正常に実装することができました。私の問題は、2番目の部分(データの受け渡し)に到達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
4

1 に答える 1

2

2番目(または3番目または4番目)のインターフェイスを追加するには、カンマを付けて入力します

あなたが言う例?私はそれができると思います。

@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];
}

そして、これはおそらく私のものよりもはるかに優れているデリゲートについての良い答えです: Objective-Cでデリゲートを作成するにはどうすればよいですか?

于 2012-07-10T17:01:58.323 に答える