Во-первых, я рекомендую вам поискать и посмотреть Objective-C
документацию и примеры. Но есть основные из того, как представить UIViewController
.
SecondViewController *controller = [SecondViewController new];
, если вы хотите использовать блок завершения
[self presentViewController:controller animated:YES completion:^{
}];
или если вы хотите использовать только что присутствующий.
[self presentViewController:controller animated:YES completion:nil];
// РедактироватьРаздел
Итак, я предполагаю, что кнопки, как показано ниже.
UIButton *toGoSecond;
UIButton *toGoThird;
Затем в методе viewDidLoad
вы можете assign
действия для этих кнопок.
[toGoSecond addTarget:self action:@selector(goToSecond) forControlEvents:UIControlEventTouchUpInside];
[toGoThird addTarget:self action:@selector(goToThird) forControlEvents:UIControlEventTouchUpInside];
И есть функции обработчика презентации.
-(void) goToSecond{
SecondController *second = [SecondController new];
[self presentViewController:second animated:TRUE completion:nil];
}
-(void) goToThird{
ThirdController *thirdController = [ThirdController new];
[self presentViewController:thirdController animated:TRUE completion:nil];
}
Я думаю, что небольшой поиск и просмотр руководств может помочь вам понять вашу проблему, я надеюсь, что отредактированный ответ поможет вам.
// ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ
Эй, я не могу полностью понять вашу проблему, когда отвечаю на это, но я решаю вашу проблему с помощью шаблона делегирования.
Iсоздали 3 контроллера с именами ViewController
, SecondViewController
, ThirdViewController
.
Итак, поехали.
Создайте протокол.
@protocol ProtocolName
-(void) go;
@end
Тогданазначьте его первому контроллеру представления, как показано ниже.
@interface ViewController : UIViewController<ProtocolName>
Чем в файле ViewController.m заполнить метод go.
- (void)go{
NSLog(@"triggered");
SecondViewController *second = [SecondViewController new];
[self presentViewController:second animated:TRUE completion:nil];
}
Затем в файл ThirdController.h
положитьdelegate
как weak
переменная.
@interface ThirdViewController : UIViewController
@property (nonatomic,weak) id<ProtocolName> delegate;
@end
Перед переходом к ThirdViewController
из FirstViewController
назначьте его делегата, как показано ниже.
-(void) goToThird{
ThirdViewController *thirdController = [ThirdViewController new];
[thirdController setDelegate:self];
[self presentViewController:thirdController animated:TRUE completion:nil];
}
Тогда еслиВы нажимаете свою кнопку для присутствия SecondViewController
, реализуете метод действия кнопки, как показано ниже.
- (void) targetMethod{
[self dismissViewControllerAnimated:YES completion:nil];
[_delegate go];
}
Сначала вы должны отклонить свой текущий ThirdViewController
, затем делегат работает и представляет SecondViewController
.