У меня есть приложение, подобное Facebook. Я хочу нажимать и всплывать в swreveal view controller. Как это можно достичь? Проверьте следующее изображение.Как я могу нажимать pop в swreveal view controller в ios?
Любая помощь будет оценена.
У меня есть приложение, подобное Facebook. Я хочу нажимать и всплывать в swreveal view controller. Как это можно достичь? Проверьте следующее изображение.Как я могу нажимать pop в swreveal view controller в ios?
Любая помощь будет оценена.
Я бы раскадровку как это:
В LoginViewController:
@IBAction func skip(_ sender: Any) {
// Show dashboard
let sb = UIStoryboard(name: "Main", bundle: nil)
let controller = sb.instantiateViewController(withIdentifier: "DashboardNavigationController")
revealViewController().setFront(controller, animated: true)
}
@IBAction func validateUser(_ sender: Any) {
// show profile
// Here test for valid user name and password
// If OK
let sb = UIStoryboard(name: "Main", bundle: nil)
let dashboardNC = sb.instantiateViewController(withIdentifier: "DashboardNavigationController") as! UINavigationController
let profileVC = sb.instantiateViewController(withIdentifier: "ProfileViewController")
dashboardNC .pushViewController(profileVC, animated: false)
revealViewController().setFront(dashboardNC, animated: true)
}
@IBAction func dismissKeyboard(_ textField: UITextField) {
textField.resignFirstResponder()
}
В MenuTableViewController (SideMenu):
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
// ...
let dashboardNC = revealViewController().frontViewController as! UINavigationController
let nc = revealViewController().frontViewController as! UINavigationController
let vc = nc.topViewController
if !(vc is ProfileViewController) {
// Instantiate controller from story board
let sb = UIStoryboard(name: "Main", bundle: nil)
let controller = sb.instantiateViewController(withIdentifier: "ProfileViewController")
dashboardNC.pushViewController(controller, animated: false)
}
// Push it with SWRevealViewController
revealViewController().pushFrontViewController(dashboardNC, animated: true)
}
DashboardViewController:
class DashboardViewController: UIViewController {
@IBOutlet weak var revealButton: UIBarButtonItem!
@IBOutlet weak var rightButton: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
revealButton.target = revealViewController()
revealButton.action = #selector(SWRevealViewController.revealToggle(_:))
rightButton.target = revealViewController()
rightButton.action = #selector(SWRevealViewController.rightRevealToggle(_:))
revealViewController().tapGestureRecognizer()
revealViewController().panGestureRecognizer()
revealViewController().rearViewRevealOverdraw = 0
revealViewController().rightViewRevealOverdraw = 0
}
Не Objective-C, но вы можете легко перевести!
вы можете конвертировать в objc –
Нет, это так просто, что вы можете приложить усилия для этого, я думаю. –
Я новичок в ios –
В своем делетете у вас есть менеджер Login/Dashboard через rootViewController окна.
Шаг 1: В вашем AppDelegate написать метод, вызовите например setupRootVC()
func setupRootVC(){
if userIsLoggedIn{
window.rootViewController = yourSWRevealControllerObj
}else{
window.rootViewController = yourLoginControllerObj
}
}
Шаг 2: Вызов setupRootVC()
метод из didFinishLaunchingWithOptions
метода.
Шаг 3: В вашем LoginVC
, после того, как пользователь вошел в успешно называют setupRootVC()
метод AppDelegate в.
Шаг 4: Убедитесь frontViewController
из SWRevealController
внутри UINavigationController
так, что ваш может толкать и поп-музыки через него.
Я предлагаю вам узнать больше об архитектуре приложений iOS и о том, как работают rootViewController
и UINavigationController
. Надеюсь, что помогает.
Можете ли вы дать демонстрацию .. в объекте c –
Скажите, что вы пробовали, Stackoverflow не для что вы просите. –
, если вы хотите, чтобы подтолкнуть от swreveal к любому контроллеру
UIStoryboard*Storyboard=[AppDelegate storyBoardType];
yourController *your=(yourController*)[Storyboard instantiateViewControllerWithIdentifier:@"yourControllerId"];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: your];
[navController setViewControllers: @[your] animated: YES];
[self.revealViewController setFrontViewController:navController];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
}
из любого контроллера swreveal вид контроллера, вы должны добавить эту строку в действии, нажмите
[self.revealViewController revealToggleAnimated:YES];
Вы можете использовать метод UINavigationController в:
- (void)setViewControllers:(NSArray<UIViewController *> *)viewControllers animated:(BOOL)animated NS_AVAILABLE_IOS(3_0);
но обратите внимание, что он устанавливает весь стек навигации контроллера. , так что вы, вероятно, придется принять текущее состояние вид контроллера из свойства
@property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;
выделить новый
NSMutableArray *controllers = [NSMutableArray arrayWithArray:self.navigationController viewControllers];
[controllers addObject:VC1];
[controllers addObject:VC2];
[controllers addObject:VC3];
[self.navigationController setViewControllers:controllers animated:YES];
AppCoda сделал учебник, используя SWRevealViewController некоторое время назад. Они дают довольно подробные инструкции. http://www.appcoda.com/ios-programming-sidebar-navigation-menu/ – Erik
@ Erik, пожалуйста, проверьте изображение. –