我創建了一個single View的工程,然後在xib上拖了一個UITextField,我想在這個視圖顯示時,文本框裡能夠默認顯示些文字,不知道該怎麼辦。我是這樣做的,但是就是文本框裡面什麼也不顯示,以下是我的代碼,不知道哪裡出問題了,我也做了控件關聯
// TestViewController.h
#import
@interface TestViewController : UIViewController
{
__weak IBOutlet UITextField *field;
}
// TestViewController.m
#import "TestViewController.h"
@interface TestViewController ()
@end
@implementation TestViewController
(void)viewDidLoad
{
[super viewDidLoad];
[self setField:@"hhhh"];
}
(void)setField:(NSString *)str
{
field.text = str;
}
@end
// TestAppDelegate.m
#import "TestAppDelegate.h"
#import "TestViewController.h"
@implementation TestAppDelegate
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
TestViewController *tvc = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
[tvc setField:@"hhhh"];
self.window.rootViewController = tvc;
[self.window makeKeyAndVisible];
return YES;
}
我是一個菜鳥, 不過對於你的問題我個人理解是這樣的,說的不好別罵街,別托.
1,UITextFileld一般都是用強引用或者不聲明__weak, __strong讓他默認裝態.
2.如果單純想給textField一個默認值的話可以使用textField.placeholder = @"默認顯示字符";(這種默認值編輯時候消失) 或者 textField.text=@"顯示字符";
我按照你的代碼實驗 了下:
1,如果使用__weak IBOutlet UITextField *field; 無法然後使用set函數賦值, 也不能在delegate裡邊調用並賦值,
2,若果使用@property (weak,nonatomic)IBOutlet UITextField *textField;(不能使用set函數)
可以在代理裡邊調用, 你的那個寫法賦值可定會失敗的, 因為你寫到了rootViewController上邊,也就是你的View還沒生命
self.window.rootViewController = tvc;
[self.window makeKeyAndVisible];
[tvc setField:@"hhhh"];這樣就會顯示了;