我正在製作電梯的東西。我無法使用presentModalViewController發送具有不同視圖的數據。我沒有找到紅色消息「favoriteColorString」屬性。我複製了完全相同但不同的表單名稱和按鈕。 「favoriteColorString」出現錯誤,無法發送elevator2數據。使用協議和代理使用presentModalViewController不能在視圖之間發送數據
我試過兩種不同的東西。
Elevator2View.favoriteColorString = [[NSString alloc] initWithFormat:@"Your favorite color is %@", favoriteColorTextField.text];
而且
favoriteColorString = [[NSString alloc] initWithFormat:@"Your favorite color is %@", favoriteColorTextField.text];
這裏是我的代碼:
ElevatorView.h
#import <UIKit/UIKit.h>
#import "Elevator2View.h"
@interface ElevatorView : UIViewController<PassSecondColor>
{
Elevator2View *Elevator2View;
IBOutlet UITextField *favoriteColorTextField;
IBOutlet UILabel *favoriteColorLabel;
IBOutlet UILabel *secondFavoriteColorLabel;
NSString *secondFavoriteColorString;
}
@property (nonatomic, retain) Elevator2View *Elevator2View;
@property (nonatomic, retain) IBOutlet UITextField *favoriteColorTextField;
@property (nonatomic, retain) IBOutlet UILabel *favoriteColorLabel;
@property (nonatomic, retain) IBOutlet UILabel *secondFavoriteColorLabel;
@property (copy) NSString *secondFavoriteColorString;
@end
ElevatorView.m
#import "ElevatorView.h"
#import "Elevator2View.h"
@implementation ElevatorView
@synthesize Elevator2View, favoriteColorTextField, favoriteColorLabel, secondFavoriteColorLabel;
@synthesize secondFavoriteColorString;
-(IBAction)level1:(id)sender;{
favoriteColorTextField.text = @"1";
Elevator2View.favoriteColorString = [[NSString alloc] initWithFormat:@"Your favorite color is %@", favoriteColorTextField.text];
[self presentModalViewController:[[[Elevator2View alloc] init]
autorelease] animated:NO];
}
Elevator2View.h
#import <UIKit/UIKit.h>
@protocol PassSecondColor <NSObject>
@required
- (void) setSecondFavoriteColor:(NSString *)secondFavoriteColor;
@end
@interface Elevator2View : UIViewController{
IBOutlet UITextField *secondFavoriteColorTextField;
IBOutlet UILabel *favoriteColorLabel;
IBOutlet UILabel *secondFavoriteColorLabel;
NSString *favoriteColorString;
id <PassSecondColor> delegate;
}
@property (copy) NSString *favoriteColorString;
@property (nonatomic, retain) IBOutlet UITextField *secondFavoriteColorTextField;
@property (nonatomic, retain) IBOutlet UILabel *favoriteColorLabel;
@property (nonatomic, retain) IBOutlet UILabel *secondFavoriteColorLabel;
@property (retain) id delegate;
@end
Elevator2View.m
#import "Elevator2View.h"
@interface Elevator2View()
@end
@implementation Elevator2View
@synthesize secondFavoriteColorTextField, favoriteColorLabel, secondFavoriteColorLabel;
@synthesize favoriteColorString;
@synthesize delegate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void) viewWillAppear:(BOOL)animated
{
favoriteColorLabel.text = favoriteColorString;
}
- (void) viewWillDisappear:(BOOL) animated
{
// [[self delegate] setSecondFavoriteColor:secondFavoriteColorTextField.text];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
favoriteColorLabel.text = favoriteColorString;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
見http://www.theappcodeblog.com/?p=90
1. post'Elevator2View'code。即使你不關心命名約定,也請不要將你的變量命名爲類。 – Kreiri 2013-04-10 18:55:36
這是Elevator2Viewcode的代碼。 – HotScreen 2013-04-10 19:39:20
也使用屬性時(添加到@ Kreiri的評論),不要聲明iVars,也不要合成。始終使用屬性語法self.property引用它們。 [見這裏](http://stackoverflow.com/questions/14236799/should-i-declare-variables-in-interface-or-using-property-in-objective-c-arc/14236931#14236931)瞭解詳情。如果你用這些建議清理你的問題,這將有所幫助。 – foundry 2013-04-10 21:07:42