我有一個應用程序,我在一個視圖中設置UITextField中的郵政編碼值。當我切換視圖時,我希望將該值顯示爲UILabel。我知道如何在一個視圖控制器內完成此操作,但不是在兩個視圖控制器之間。我試圖在名爲'globals.h'的頭文件中將'郵編值'設置爲一個常量字符串,然後調用它,但它總是崩潰。下面是一些示例代碼:如何將NSString值導入到不同的視圖控制器?
這是globals.h文件:
#import <Foundation/Foundation.h>
@interface globals
extern NSString *zipCodeValue;
@end
這是globals.m文件:
#import "globals.h"
@implementation globals
NSString *zipCodeValue = @"default value";
@end
這是第一個視圖(其中,郵政編碼被輸入到文本字段中:接口和實現):
#import <UIKit/UIKit.h>
@interface ZipCodeEntryViewController : UIViewController <UITextFieldDelegate> {
UITextField *zipCode;
UIButton *doneButton;
}
@property (nonatomic, retain) IBOutlet UITextField *zipCode;
@property (nonatomic, retain) IBOutlet UIButton *doneButton;
-(IBAction) tapBackground:(id)sender;
-(IBAction) doneButtonClick:(id)doneButton;
@end
#import "ZipCodeEntryViewController.h"
#import "MillersAppAppDelegate.h"
#import "AddressViewController.h"
#import "globals.h"
#define MAX_LENGTH 5
@implementation ZipCodeEntryViewController
@synthesize zipCode, doneButton;
-(IBAction) doneButtonClick:(id)doneButton{
MillersAppAppDelegate *delegate = (MillersAppAppDelegate *)[[UIApplication sharedApplication] delegate];
AddressViewController *addressView = [[AddressViewController alloc]initWithNibName:@"AddressViewController" bundle:nil];
[delegate switchViews:self.view toView:addressView.view];
//using the global string to store the text field content
zipCodeValue=zipCode.text;
//the button is clicked and the view changes to addressView while NSLogging the correct value. So far, so good.
NSLog(@"%@", zipCodeValue);
[addressView release];
}
-(IBAction) tapBackground:(id)sender{
[zipCode resignFirstResponder];
}
所以,在這個點t(它會正確記錄)。我假設常量變量'zipCodeValue'將繼續保留它的設定值,即使視圖控制器已經改變。但是當我試圖將它應用於新的視圖控制器(AddressViewController)時,它對標籤沒有任何作用。這是我所使用的方法(I命名它在頭文件;「zipCodeEntry」是我命名初始化和在界面生成器連接到目標的的UILabel):
-(void)setZipCode{
zipCodeEntry.text=zipCodeValue;
}
我現在徹底困惑,我有理由相信我的大腦缺少一些東西,因爲我是新手。對不起,如果這是囉嗦,我不想留下任何東西。我顯然是一個初學者。 AGGGG!
怎麼樣在應用程序委託存儲zipCodeValue在那裏你可以從任何視圖控制器訪問? –
我試圖通過將它存儲在我的App Delegate中,它是「MillersAppAppDelegate.h」,然後將頭文件導入到ZipCodeEntryViewController.m文件中。它不允許我訪問zipCodeValue(就像我去鍵入它時,它沒有預測性文本表明它是可用選項)。 – MillerMedia
好吧,我想出瞭如何將它存儲在我的App Delegate中,然後訪問它。謝謝,只需要閱讀如何做到這一點! – MillerMedia