2015-07-10 2 views
0

Я пытаюсь сделать кнопку на навигационном контроллере, который вызывает переход к другому контроллеру представления (который имеет кнопку возврата к предыдущему навигационному представлению). Я пытаюсь сделать это программно. Я сделал UINavigationController и UITabBarController. Контроллер nav - это вкладка открытия контроллера табуляции. Я создал подкласс UIViewController под названием SubVieController. Я ничего не добавил к подклассам, а только к автогенерируемому материалу. Я внес все свои изменения в метод didFInishLaunchingWithOptions в Appdelegate.m.obj c, xcode, делающий переход на вид

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
self.window.backgroundColor = [UIColor whiteColor]; 
UITabBarController * tabBarController = [[UITabBarController alloc] init]; 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
SubViewController * firstTab= [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil]; 
UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:firstTab]; 
SecondViewController *secondTab = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 

SubTableController *table = [[SubTableController alloc]initWithNibName:@"SubTableController" bundle:nil]; 
navigationController1.tabBarItem.title = @"First Nav"; 
secondTab.tabBarItem.title [email protected]"Second"; 
table.title = @"Third Table"; 
tabBarController.viewControllers = @[navigationController1,secondTab, table]; 
[self.window setRootViewController:tabBarController]; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

И я стараюсь, чтобы переместить кнопку на файл SubViewController.xib, чтобы подключить его в код, так что я могу сделать кнопку действия. Но когда я ctrl + перетаскиваю, ничего не вставляет в код, как обычно.

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

EDIT: Этот код, кажется, работает для кнопки действия: - (IBAction) переход: (UIButton *) отправитель { SubViewController * view2 = [[SubViewController Alloc] инициализации]; [self.navigationController pushViewController: view2 animated: YES]; }

ответ

0

Как вы правильно это сделали, UITabBarController не должен толкать UIViewController, но UINavigationController. То, что UINavigationController должно иметь rootViewController.

Невозможность управления перетаскиванием в интерфейсе Builder обычно означает, что пользовательский класс в инспекторе идентификации установлен неправильно.

Подключение IBAction

  1. В проекте Xcode, Выбрать SubViewController.xib
  2. Выберите кнопку
  3. Xcode> Вид> Утилиты> Показать Connections Inspector
  4. Xcode> Вид> Помощник редактора> Show Assistant Editor
  5. Убедитесь, что Automatic> SubViewController.m> No Selection присутствует.Если нет, то вы не можете иметь пользовательский класс установить правильно в IB
  6. В Connections, нажмите Touch Up Inside втулку и перетащить на помощника, прямо под @implementation SubViewController
  7. Введите имя, например buttonTappedAction
  8. Add код, чтобы подтолкнуть UIViewController при необходимости:

Obj-C

UIViewController * vc = [[UIViewController alloc] initWithNibName:@"id" bundle:nil]; 
[self.navigationController pushViewController:vc animated:YES]; 

Swift

let vc = UIViewController(nibName: "id", bundle: nil) 
self.navigationController?.pushViewController(vc, animated: true) 

Раскадровка

Архитектура предложение: Начните с использованием раскадровки

Нет необходимости писать одну строку кода для реализации вышеуказанного решения с помощью раскадровки!

enter image description here

+0

Я получил действие кнопки всплывают сейчас, спасибо! Но какой код я использую для ввода нового представления для перехода? Это было мясом моего вопроса. – Eric

+0

Найденный код, который сработал! – Eric

+0

Отлично! Пожалуйста, отредактируйте/очистите свой вопрос, а затем удалите комментарии. Спасибо. – SwiftArchitect