Tag: uiviewcontroller

iOS 9自定义转换 – animationControllerForDismissedController不被调用

我是iOS开发的新手,最近遇到了这个问题,在iOS 9中进行自定义转换。 我有一个对象符合UIViewControllerTransitioningDelegate协议,并实现animationControllerForDismissedController ,如下所示: @implementation MyCustomizedTransitioningDelegate #pragma mark – UIViewControllerTransitioningDelegate – (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed { MyCustomizedTransitionAnimator *animator = [[MyCustomizedTransitionAnimator alloc] init]; animator.presenting = NO; return animator; } @end 触发模式转换的过程如下所示: @implementation MyViewController #pragma mark – Initializers + (MyCustomizedTransitioningDelegate *)modalTransitioningDelegateSingletonInstance; { static MyCustomizedTransitioningDelegate *delegateInst = nil; static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ delegateInst = [[MyCustomizedTransitioningDelegate alloc] init]; […]

通过名称的iOS Swift popToViewController

我试图popup一个viewcontroller,我相信是索引0.我的ViewController名称是HomeVC。 self.navigationController!.popToViewController(self.navigationController!.viewControllers[0] as! UIViewController, animated: true) 但是,上面的代码只是让我回到最近的视图控制器。 不知道为什么它不会去我的HomeVC视图控制器。 他们的方式我可以使用ViewController名称来popup它?

当我添加一个视图到另一个视图(这两个视图是由视图控制器控制),我真的应该使用addChildViewController吗?

我正在用XIB构build一个UIViewController 。 在这个XIB中,我有其他视图控制器中的其他视图的占位符( UIView中的UIView对象)。 (顺便说一下,我也可以直接添加这些视图,没有占位符) 我不是build立一个容器视图控制器:我的意思是它不是一个UINavigationController 。 这只是一个“通常”的视图控制器。 想象一下,例如,我在我的视图中有一个小的子视图,用于“Facebook”徽标和计数器。 这个“Facebook视图”被附加到当“Facebook视图”被触摸时调用的另一个视图控制器。 所以,“Facebook控制器”肯定需要是我的“主”视图控制器@property 。 在这种情况下,我应该真的使用addChildViewController:和所有的机制? 或没有? 谢谢!

导航控制器和视图控制器之间的区别?

导航控制器和视图控制器之间的区别? 我的意思是我们该如何决定何时使用导航控制器或普通的视图控制器?

新视图控制器被推入堆栈后,UIViewanimation继续运行

解决了。 可笑的尴尬。 我没有使用实例variables,我在实现中将它声明为花括号。 真的很挣扎。 我有一个视图控制器pipe理一个animation倒数计时器。 animation是使用recursion的UIViewanimation和一个简单的int ivar减less。 像下面这样(这是一个简化的片段): – (void) animate { [UIView animateWithDuration:0.75f delay:0.25f options:UIViewAnimationCurveEaseInOut animations:^{ aView.center = newCenter; counter–; } completion:^(BOOL finished) { if (counter != 0) [self animate]; }]; } 在倒计时期间,用户可以轻扫以进入下一步,而不是等待计时器完成倒计时。 当用户刷新一个新的视图控制器 – 当前视图控制器的一个新实例 – 被压入堆栈,并使用下一步的值: TimerViewController * vc = (TimerViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Timer"]; [vc setTask: _task + 1]; [self.navigationController pushViewController:vc animated:YES]; 新的视图控制器滑动到位并开始倒计时,但前一个视图控制器继续animation,在debugging器中,我可以清楚地看到这个视图控制器的另一个实例,我将popup一个回到,仍然运行animation,导致一个视图移动不正常。 两个不同的视图控制器实例是animation相同的aView实例? […]

UIViewController作为一个单例

我有一个标签栏应用程序中的UIViewController。 我已经从MainWindow.nib文件添加了控制器(即不是编程)。 我的问题是如何使我的视图控制器单身? (解决Facebook委托问题)。

将对象添加到另一个View Controller中的数组

我有一个HomeViewController有一个tableView填充数组tableViewArray (最初为空)。 当我点击一个barButton时,我模式地延续到另一个名为OutsideViewController View Controller,它具有由另一个数组填充的另一个tableView。 我想要做的是以下几点: 当我在我的OutsideViewController点击一行时,我想将所选的string值添加到tableViewArray以便当我回到HomeViewController ,tableView具有在tableView中列出的新项目。 到目前为止,这是我曾经试过的: 在我的OutsideViewController.m的-didSelectRowAtIndexPath方法中,我有这段代码: NSString *selectedRow = [outsideArray objectAtIndex:indexPath.row]; NSMutableArray *temporaryArray = [NSMutableArray arrayWithObject:selectedRow]; HomeViewController *homeVC = [[HomeViewController alloc] init]; homeVC.tableViewArray = temporaryArray; 该代码的作品,但HomeViewController的tableView仍然是空的,当我返回。 我必须重新加载tableView数据吗? 我做对了吗? 这是我如何在故事板中设置我的视图控制器: HomeViewController -(modal segue)-> Navigation Controller –> OutsideViewController 此外,从OutsideViewController返回到HomeViewController是由这行代码完成的: [self dismissViewControllerAnimated:YES completion:^{ }];

pipe理login/注销转换的build议

我有一个应用程序,只有当用户通过身份validation才能使用。 特别是,我创build了两个不同的UIViewController。 第一个叫做LoginViewController,第二个叫做HomeViewController。 在applicationDidFinishLaunching:方法中,创buildLoginViewController,然后添加到rootViewController属性中,如下所示: LoginViewController* loginCtr = … // alloc and initiWithNibName… self.window.rootViewController = loginCTr; [loginCtr release]; Whitin LoginViewController我创build了一个执行login的方法。 当用户通过身份validation时,我执行一个名为performLogin的方法。 – (void)performLogin { MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate switchView]; } swicthView方法已经在Application委托类中实现了。 – (void)switchView { if(VIEW_TYPE == kLogin) // Display Login { // create a new LoginViewController and assign it to rootViewController } […]

iOS Swift:在TableView上显示asynchronous数据

我有一个ViewController和一个TableView ,现在TableView的数据是通过一个http调用asynchronous在另一个类拉。 class ViewController1: UIViewController, UITableViewDelegate, UITableViewDataSource { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") MyHttpClass().getData()//INITIATING getting data asynchronously … } MyHttpClass在几秒钟后asynchronous获取数据,但是它没有引用ViewController来MyHttpClass数据(理想情况下,ViewController.tableView.reloadData是我需要调用的) 有没有更好的方法来处理这个问题? 我如何得到参考。 当MyHttp获取数据的ViewController实例? 任何更好的方法来处理这个?

展开segue不会释放我的视图控制器

我有这样的东西: 我的rootViewController是一个navigationBar – 让这是A.剩下的是正常的UIViewControllers ,并通过推(通过buttonIBAction方法)编程方式继续。 但是从D – > A,我使用unwind segue(也通过performSegueWithIdentifier:sender :)。 这里的问题是当执行segue时,B,C和D根本就不被deallocated 。 这不仅导致内存泄漏问题,但我的计时器仍在运行。 我不确定为什么是这样。 我认为放松的赛段是想为你处理所有这些? 任何想法为什么?