无法从UITextField获取文本

时间:2014-02-26 16:32:56

标签: ios objective-c ios7 uitextfield

经过多次研究,我找不到解决方案。所以我决定发表我的问题。我在UITextField *txtUsername有一个** IBOutlet DetailViewController.h。在FormViewController我有一个UIScrollview,然后我添加[self.scrollView addSubview:DetailView.view]。问题是当DetailViewController.m站在txtUsername.text时,它会返回一个零值。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试将一个视图控制器嵌入另一个视图控制器中。我建议使用Container view,然后将DetailViewController加载到其中。简单地添加视图就像在代码中一样,但这还不够。您可能希望DetailViewController中的所有行为都能正常工作。

答案 1 :(得分:0)

调试很多次后我发现问题是: 在 FormViewController 我有方法:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = @"Add new user";
        DetailView = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    }
    return self;
}

和方法(已在viewDidLoad调用)

-(void) loadViewBySegment {
[DetailView.view removeFromSuperview];
    [self.scrollView addSubview:DetailView.view];

   }

和ViewDidLoad:

- (void)viewDidLoad
{
 [super viewDidLoad];
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(save)];
    self.navigationItem.rightBarButtonItem = saveButton;
    if(user)
    {
        userDetailView.user = user;
    }
    [self loadViewBySegment];
    // Do any additional setup after loading the view from its nib.
}

-(void)save{
[[userDetailView userDetailInstance] insertData];
}

然后在 DetailViewController 我创建 insertData 函数

-(void)insertData{
User *object = [[User alloc] init];
    object.Username = txtUsername.text;
    object.FullName = txtFullname.text;
    object.Title = txtTitle.text;
    object.Role = [NSNumber numberWithInt:[txtRole.text intValue]];
    object.UserInitial =txtInital.text;
    object.Status = YES;
    object.AddedTime = [NSDate date];
    object.UpdatedTime = [NSDate date];
    object.Phone = @"0949931124";
    object.Password = @"123456";

    [[DBManager sharedInstant] insertData:BUsers item:[object dictionary] target:self];
}

texfield.text为零的原因: 在 FormViewController ,我调用 DetailViewController 的实例,它的意思是 DetailViewController - 将有新的alloc init 。这样,之前用户输入的文本字段值将被重置。 我需要做的正确方法是:更改 FormViewController 的保存功能:

-(void)save{
[DetailView insertData];
}
对我来说,P / S:课程学习是:使用Instace(Singleton Design合作伙伴)时要小心。