ビューでは、これをfirstViewと呼びましょう。次のようにsecondViewを作成し、firstViewで特定のことが発生した場合にプッシュしました。
SecondViewController *secondVC = [[secondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:secondVC animated:YES];
[secondVC release];
ここで、secondViewにいるときに、ボタンが押されたとすると、firstViewに戻り、secondViewからfirstViewに値を戻します(secondViewからfirstViewへのテキストフィールドの整数値を言います)。
これが私が試したことです:
@protocol SecondViewControllerDelegate;
#import <UIKit/UIKit.h>
#import "firstViewController.h"
@interface SecondViewController : UIViewController <UITextFieldDelegate>
{
UITextField *xInput;
id <SecondViewControllerDelegate> delegate;
}
- (IBAction)useXPressed:(UIButton *)sender;
@property (assign) id <SecondViewControllerDelegate> delegate;
@property (retain) IBOutlet UITextField *xInput;
@end
@protocol SecondViewControllerDelegate
- (void)secondViewController:(SecondViewController *)sender xValue:(int)value;
@end
そしてmファイルで
- (IBAction)useXPressed:(UIButton *)sender
{
[self.delegate secondViewController:self xValue:1234]; // 1234 is just for test
}
そして、firstViewで私は次のことを行いました。
#import "SecondViewController.h"
@interface FirstViewController : UITableViewController <SecondViewControllerDelegate> {
}
@end
そして実装:
- (void) secondViewController:(SecondViewController *)sender xValue:(int)value
{
[self.navigationController popViewControllerAnimated:YES];
}
ここで、問題はFirstViewControllerの1つで、「プロトコル「SecondViewControllerDelegate」の定義が見つかりません。2つでは、デリゲートメソッド(上記の最後のコード)がまったく呼び出されないという警告が表示されます。誰か教えてください。どうしたの?