Запустите контроллер Uitableview из кнопок UIbar, созданных динамически

- (void)createBarButtons
{
    UIBarButtonItem *myCheckButton = [[UIBarButtonItem alloc] initWithTitle:@"Check Records" style:UIBarButtonItemStylePlain target:self action:@selector(checkRecordsAction)];
    UIBarButtonItem *mySaveButton = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction)];
    [mySaveButton setTintColor:[UIColor colorWithRed:34.0/255.0 green:97.0/255.0 blue:221.0/255.0 alpha:1]];
    NSArray *myButtonArray = [[NSArray alloc]initWithObjects:mySaveButton, myCheckButton,nil];
    self.navigationItem.rightBarButtonItems = myButtonArray;
}

Я не знаю, подпадает ли этот вопрос под слишком локализованную категорию. Но помогите мне здесь. Итак, как вы видите, я создал два элемента кнопок панели. Сохранить - это просто сохранить данные в CoreData, работает нормально. Но контрольные записи должны запускать новый контроллер UITableviewcontroller.

- (void)checkRecordsAction
{
NSLog(@"the new stack action");
ITMSyncRecordsTVC *syncRecords  = [[ITMSyncRecordsTVC alloc]init];
//  [self presentViewController:syncRecords animated:YES completion:^{
//  self.navigationController.view.superview.bounds = CGRectMake(0, 0, 250, 250);}];
[self.navigationController pushViewController:syncRecords animated:YES];
}

ITMSyncRecordsTVC - это TableViewController с кнопкой «Назад». Поэтому, когда я нажимаю на контрольные записи, он запускает контроллер tableview, но в нем нет значений, и он не показывает кнопку панели «Назад», которую я на нее надел. До сих пор я прекрасно использовал переходы и раскадровки. Но как мне запустить новый контроллер представления без них, я не знаю. Мой первый прыжок в ios это ios6. Мне не хватает чего-то, чего я не знаю. Итак, дайте мне знать, как вызвать/запустить новый TableViewController. В Android у нас были намерения, которые сделали свое дело. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Спасибо... РЕДАКТИРОВАТЬ: Итак, я отредактировал свой код checkRecordsAction.

РЕДАКТИРОВАТЬ :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

ITMOrdersVC *ordersVC = [[ITMOrdersVC alloc]init];
NSLog(@"at line 188 %d",indexPath.row);
if(indexPath.row < self.salesOrdersArray.count)
{
    ordersVC.salesOrder = [self.salesOrdersArray objectAtIndex:indexPath.row];
    NSLog(@"the sales purchase order number is %@",ordersVC.salesOrder.purchaseOrderNumber);

    NSLog(@"done - 140");
    [self.navigationController pushViewController:ordersVC animated:YES];
}
}

Таким образом, при выборе строки в контроллере табличного представления ITMSyncRecordsTVC он делает то же самое. Я получаю новый экран ITMOrdersVC с кнопкой панели «Назад» слева и 2 динамически генерируемыми кнопками панели. Я получаю 2 динамически генерируемые кнопки панели, но не назад. Я думал, что как только я щелкну строку, она «вернется» к предыдущему экрану, на который я передаю объект salesOrder. Следующим моим шагом было проверить, получаю ли я объект заказа на продажу из TVC, а затем загружаю его. Так что в основном только 2 экрана. Первый экран (сохраните, проверьте записи синхронизации). Второй экран нажмите а.) назад (перейти к первому экрану... ничего не делать) или б.) щелкните строку на втором экране и заполните первый экран без кнопки панели. Если это неясно, спросите меня.


person RookieAppler    schedule 21.12.2012    source источник
comment
У вас есть делегаты в ITMSyncRecordsTVC? Звонят? Для того чтобы увидеть нормальную кнопку назад, нужно сделать pushViewController.   -  person iDev    schedule 21.12.2012
comment
@Роб. Я отредактировал код, чтобы он имел init. Я все еще не вижу кнопку «Назад».   -  person RookieAppler    schedule 21.12.2012
comment
@Роб. да. Я встроил свой ITMSyncRecordsTVC в навигационный контроллер. Итак, в моей раскадровке есть 3 контроллера: 1. Экран со всеми элементами управления (включая динамически генерируемые 2 кнопки панели) 2. Контроллер навигации 3. Контроллер табличного представления ITMSyncRecordsTVC.   -  person RookieAppler    schedule 21.12.2012
comment
@Rob.Кроме того, это происходит как бы в цикле. Я нажимаю «Проверить записи синхронизации», и он показывает ITMSyncRecordsTVC. Теперь у меня есть OrderedItems в качестве кнопки «Назад». Я нажимаю ее, и она возвращает меня к предыдущему экрану. Если я нажимаю одну из строк в ITMSyncRecordsTVC, она запускает новую форму «Заказные элементы». Я добавляю еще немного кода относительно того, что я сделал. Пожалуйста, проверьте его.   -  person RookieAppler    schedule 21.12.2012
comment
@Роб. Хорошо, я сделал это изменение. Первый VC теперь встроен в навигационный контроллер, а есть только TVC. Итак, снова три контроллера.   -  person RookieAppler    schedule 21.12.2012
comment
См. мой ответ для типичного способа добавить переход к раскадровке, а затем вызвать этот переход из кода.   -  person Rob    schedule 21.12.2012


Ответы (1)


Чтобы запустить новый контроллер табличного представления с помощью раскадровки, вам нужно:

  1. Встройте основную сцену в навигационный контроллер.

    встроить основную сцену в навигационный контроллер

  2. Вы хотите иметь переход от основного контроллера ко второму. Итак, удерживая нажатой клавишу Control, перетащите значок контроллера представления (на панели под основной сценой) на следующую сцену:

    добавить пуш-переход

  3. Это должно выглядеть так (обратите внимание на внешний вид панели навигации в представлении таблицы назначения):

    пункт назначения имеет панель навигации

  4. Затем выберите переход и дайте ему идентификатор раскадровки:

    дать идентификатор раскадровки перехода

  5. И теперь ваш код для перехода к этой сцене будет выглядеть так:

checkRecordsAction:

- (void)checkRecordsAction
{
    NSLog(@"the new stack action");

    [self performSegueWithIdentifier:@"PushSegue" sender:self];
}

Обновление:

Между прочим, в интересах полного раскрытия есть альтернатива push segue. Если вы дадите этой следующей сцене идентификатор раскадровки, вы можете использовать следующий код (очевидно, заменив "insertNextScenesStoryboardIdHere" идентификатором, который вы даете своей следующей сцене:

- (void)checkRecordsAction
{
    NSLog(@"the new stack action");

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"insertNextScenesStoryboardIdHere"];
    [self.navigationController pushViewController:controller animated:YES];
}

Лично мне это не очень нравится, поскольку в вашей раскадровке теперь есть плавающая сцена без каких-либо переходов, ваш код теперь определяет характер перехода между контроллерами представления и наличием всего в раскадровке и т. д., но это другой подход.

person Rob    schedule 21.12.2012