2016-09-30 1 views
-1

Приложение IOS имеет четыре вкладки, которые отображают различную информацию.Нажатие двух разных контроллеров представления в одной кнопке action-iOS

В моей второй вкладке viewController У меня есть одна кнопка, которая назовет ее как button1 в этом действии button1, который я перешел на экран SignInViewController, а в моем третьем контроллере представления таблиц - loginViewController.

Как в ViewControllers у меня есть возможность зарегистрироваться, так и уже существующий пользователь может войти в систему как ViewControllers.So здесь, в SignInViewController У меня есть кнопка, названная им как registerButton. Теперь в этом действии registerButton я нажал RegisterViewController и тот же, что и SignInViewController в loginViewController, и у меня есть кнопка, названная им как registerButton2. Теперь в этом registerButton2 Action я нажал тот же RegisterViewController.

Вот теперь то, что я хочу именно в RegisterViewController У меня есть кнопка позволяет назовите его SaveButton в SaveButtonAction, если я прошел от SignInViewController до RegisterViewController затем в SaveButtonAction я хочу, чтобы подтолкнуть ShippingViewController и если я прошел от loginViewController до RegisterViewController, то в SaveButtonAction я хочу нажать `AccountViewController.

в короткие (1) tabbaritem2 -> SignInViewController -> RegisterViewController -> ShippingViewController (2) tabbaritem3 -> loginViewControoler -> RegisterViewController -> AccountViewController

Я попытался следующий код в SaveButtonAction но он не работает.

Вот мой код:

- (IBAction)SaveButtonAction:(id)sender{ 


    if(_tabBarController.tabBarItem.tag == 2){ 

     UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     ShippingViewController *shipVc = [story instantiateViewControllerWithIdentifier:@"ShippingViewController"]; 
     [self.navigationController pushViewController:shipVc animated:YES]; 

    else if(_tabBarController.tabBarItem.tag == 3){ 

     UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     AccountViewController *acntVC = [story instantiateViewControllerWithIdentifier:@"AccountViewController"]; 
     [self.navigationController pushViewController:acntVC animated:YES]; 

    } 

} 

любезно help.Thanks заранее.

+0

Я не могу понять смысл вашего описания, но то, что я получаю то, что вы хотите, чтобы выполнить другой SEGUE с одной кнопки на основе некоторого условия. В этом случае создайте segues из вашего объекта контроллера вида в целевые сцены и дайте им идентификаторы. Затем в вашем методе 'saveButtonActin' вы можете использовать' self.performSegueWithIdentifier', предоставляя какой бы то ни было идентификатор segue – Paulw11

+0

, что вы хотите, я не могу понять, даже если я прочитал ваш вопрос от 3 до 4 раз, но я не могу понять ... –

+0

@hani Я просто редактировал ваши вопросы, одобряю его и не путаюсь с вопросами. – vaibhav

ответ

0

// Этот код, когда вы нажимаете RegisterVC от LoginVC. Аналогичная вещь для другого случая, но назначить @ "signin" вместо @ "login".

UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
RegisterViewController *registerVc = [story instantiateViewControllerWithIdentifier:@"RegisterViewController"]; 
registerVc.imFromLogin = @"login"; 
[self.navigationController pushViewController:registerVc animated:YES]; 
- (IBAction)SaveButtonAction:(id)sender{ 
    if([_imFromLogin isEqualToString:@"login"]) 
    { 
     [self performSegueWithIdentifier:@"regToAccount" sender:nil]; 
    }else if ([_imFromLogin isEqualToString:@"signin"]) { 
     [self performSegueWithIdentifier:@"registerToShipping" sender:nil]; 
    } 
} 
0

Просто используйте в RegisterViewController с boolean (позволяет говорить shouldFromLogin) и выдвигая из LoginVC установить boolean в true и в другом случае передать его в качестве false. Затем проверьте, что boolean в действии кнопки и перейдите к другому VC соответственно.

Демо-код:

//This code when you push to RegisterVC from LoginVC. Similar thing for other case with shouldFromLogin as NO. 

UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
RegisterViewController *registerVc = [story instantiateViewControllerWithIdentifier:@"RegisterViewController"]; 
registerVc.shouldFromLogin=YES; 
[self.navigationController pushViewController:shipVc animated:YES]; 

Затем проверьте

- (IBAction)SaveButtonAction:(id)sender{ 
if(shouldFromLogin){ 
    //Pass to AccountViewController 
} 
else{ 
    //Pass to ShippingViewController 
} 
} 
0

В файле RegisterViewController.h объявить перечисление, как показано ниже:

typedef NS_ENUM(NSUInteger, RegisterViewControllerAction) { 
    RegisterViewControllerActionShipping, 
    RegisterViewControllerActionAccount, 
} 

Кроме того, объявить новый конструктор для класса RegisterViewController:

@interface RegisterViewController 

@property (readonly) RegisterViewControllerAction action; 
- (id)initWithAction:(RegisterViewControllerAction)action; 

@end 

@implementation RegisterViewController 
@synthesize action = _action; 

- (id)initWithAction:(RegisterViewControllerAction)action { 
    if (self = [super initWithNib:xxx]) { 
     _action = action; 
    } 
} 

- (IBAction)SaveButtonAction:(id)sender { 
    if (_action == RegisterViewControllerActionShipping) { 
     .... 
    } else if (_action == RegisterViewControllerActionAccount) { 
     .... 
    } 
} 
+0

не могли бы вы добавить код здесь. Спасибо. !! – hani

+0

@hani См. Мои правки. –

+0

thanku kevin im новый разработчик. в ur код initwithnib u дал xxx ... но что я должен писать в своем проекте – hani

0

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

if(theTabBar.selectedItem == 2){ 
    ShippingViewController *shipVc = [story instantiateViewControllerWithIdentifier:@"ShippingViewController"]; 
    [self.navigationController pushViewController:shipVc animated:YES]; 
} 

else if(theTabBar.selectedItem == 3){ 
    AccountViewController *acntVC = [story instantiateViewControllerWithIdentifier:@"AccountViewController"]; 
    [self.navigationController pushViewController:acntVC animated:YES]; 
} 
+0

Я уже пробовал его не работать – hani

+0

также проверить этот код: tabBarController.selectedIndex == 2. – KKRocks

Смежные вопросы