经过多次研究,我找不到解决方案。所以我决定发表我的问题。我在UITextField *txtUsername
有一个** IBOutlet DetailViewController.h
。在FormViewController
我有一个UIScrollview
,然后我添加[self.scrollView addSubview:DetailView.view]
。问题是当DetailViewController.m
站在txtUsername.text
时,它会返回一个零值。有什么建议吗?
答案 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合作伙伴)时要小心。