将uinavigationcontroller作为一组uiviews的一部分添加到视图中

时间:2011-07-28 15:43:57

标签: iphone objective-c xcode uiview uinavigationcontroller

在我的iphone应用程序中,我首先调用一个控制器,它根据索引堆叠一些视图控制器。这是基于用户的选择,我需要显示不同的屏幕(基本上,我有一个欢迎屏幕,标签栏视图 - 这是主要的应用程序,登录和注册页面)。截至目前,一切都运行良好 - 我将它们叠加起来并根据需要移除/切换。问题是我想在登录和注册视图中添加导航栏。然而,当我这样做时,会发生一些奇怪的事情 - 我看到一个导航栏,但在它的顶部,还有一个白色条(半宽或多或少)。我怎样才能成功添加这个uinavbar?

以下是AppDelegate正在调用的控制器:

 - (void)viewDidLoad
 {
[super viewDidLoad];

myTabBarVC = [[tabBarController alloc] initWithNibName:@"tabBarController" bundle:nil];
[self.view insertSubview:myTabBarVC.view atIndex:0];

myLoginVC = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
 [self.view insertSubview:myLoginVC.view atIndex:1];

mySignUp = [[SignUpView alloc] initWithNibName:@"SignUpView" bundle:nil];
[self.view insertSubview:mySignUp.view atIndex:2];

myWelcomeView = [[WelcomeView alloc] initWithNibName:@"WelcomeView" bundle:nil];
[self.view insertSubview:myWelcomeView.view atIndex:3];

}

当我在同一个方法中将其添加到其中一个视图控制器时,它不起作用,如上所述。

  myLoginVC = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myLoginVC];
[self.view insertSubview:navController.view atIndex:1];

我怎样才能让它发挥作用?请帮忙。谢谢!

在键盘默认开启的视图中添加更多信息:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if( cell == nil)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];   

cell.textLabel.text = [[NSArray arrayWithObjects:@"",@"",nil] 
                       objectAtIndex:indexPath.row];

if (indexPath.row == 0) {

    textField1 = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 21)];
    textField1.delegate = self;
    textField1.placeholder = @"example@EMAIL.com";
    textField1.text = [inputTexts objectAtIndex:indexPath.row/2];
    textField1.tag = indexPath.row/2;
    cell.accessoryView = textField1;
    textField1.returnKeyType = UIReturnKeyNext;
    textField1.clearButtonMode = UITextFieldViewModeWhileEditing ; 
    [textField1 becomeFirstResponder];
    textField1.tag = 1;

}
else
{

    textField2 = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 21)];
    textField2.delegate = self;
    textField2.placeholder = @"password";
    textField2.text = [inputTexts objectAtIndex:indexPath.row/2];
    textField2.tag = indexPath.row/2;
    textField2.returnKeyType = UIReturnKeyDone;
    textField2.clearButtonMode = UITextFieldViewModeWhileEditing; 
    cell.accessoryView = textField2;
    [textField1 becomeFirstResponder];
    textField1.tag = 2;

}

cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;    
 }

1 个答案:

答案 0 :(得分:2)

我认为您不应该将navController.view添加为视图控制器的子视图。我怀疑这是麻烦的根源。而是使用UINavigationBar对象。

关于你的第二个问题,如果这是一个问题,而不是一个评论,关于键盘是默认的,这是因为你将textField1设置为第一响应者。