在我的UIViewController中,UITextView成员变量总是为nil

时间:2011-07-02 03:03:22

标签: objective-c cocoa-touch ios4 uitextview

在我的笔尖中,我有一个UITextView组件。

在我的UIViewController我有一个UITextView成员字段,我使用IB来确保两者是连接的(至少我认为我是通过拖动“文件所有者”并删除它在IB的UITextView上并选择我的成员变量。

现在,当我通过setText:更新文字时,UITextView仍为空白。

当我进入我的代码时,成员变量(名为textView)为nil

所以我猜我没有正确使用过IB。如何确保此变量已连接到UITextView图形元素?

这是代码

// My interface looks like

#import <UIKit/UIKit.h>

@interface DetailsController : UIViewController 
{
    UITextView *textView;
}

@property (nonatomic, retain) IBOutlet UITextView *textView; 

@end;


// and the implementation

#import "DetailsController.h"

@implementation DetailsController

@synthesize textView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        // Custom initialization
    }
    return self;
}

- (void)dealloc
{
    [super dealloc];
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

// used pressed the "Done" button
- (IBAction)done
{
    [self dismissModalViewControllerAnimated:YES];
}

- (void)setDetails: (NSString *)detail withQuote:(NSString *)quote
{
    NSLog(@"%@", textView);
    [textView setText:detail];
}

@end

2 个答案:

答案 0 :(得分:0)

连接插座,构建项目并运行后保存nib文件,如果已连接

,它应该可以工作

答案 1 :(得分:0)

我无法看到你正在调用setText,但我认为你试图在初始化程序中执行此操作。如果您以编程方式创建GUI,或者使用其他viewWill / viewDid ...方法,则在使用XIB或loadView时,不应在viewDidLoad之前完成GUI代码。

原因是因为视图在实际需要之前未加载,因此称为延迟加载。你应该通过Google获取更多信息。