开发者

adding a uinavigationcontroller to a view as part of a stack of uiviews

In my iphone app, I first call a controller which stack up a few view controllers based on index. This is done cause based on the user's selection, i will need to show different screens (basically, i have a welcome screen, tabbar view - which is the main app, sign in and sign up pages). As of now, everything works perfectly - I stack them up and remove / switch based on the need. The problem is that i would like to add a nav bar to both the sign in and sign up views. However, when i do that, something weird happens - i see a nav bar, but on TOP of it, there is a white bar as well (half width more or less). How can i add this uinavbar successfully?

Here is the controller that is being called by the 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 atIn开发者_高级运维dex:3];

}

When I add that to one of the view controllers in this same method, it doesnt work, as described above.

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

How can I make it work? Please help. Thanks!

ADDING MORE INFO ABOUT THE VIEW WHERE THE KEYBOARD IS ON BY DEFAULT:

 - (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;    
 }


I don't think you should be adding navController.view as a subview to your view controller. I suspect that's a source of the trouble. Instead use a UINavigationBar object.

With regards to your second question, if it was a question and not a remark, about the keyboard being by default, that happens because you set your textField1 as first responder.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜