добавление контроллера uinavigation в представление как часть стека uiviews - PullRequest
0 голосов
/ 28 июля 2011

В моем приложении для 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 Ответ

2 голосов
/ 29 июля 2011

Я не думаю, что вы должны добавлять navController.view как подпредставление к вашему контроллеру представления.Я подозреваю, что это источник проблемы.Вместо этого используйте объект UINavigationBar.

Что касается вашего второго вопроса, если это был вопрос, а не замечание о том, что клавиатура по умолчанию используется, это происходит потому, что вы установили textField1 в качестве первого респондента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...