Tag: uiviewcontroller

使用UITableView作为子视图添加自定义的UIViewController

我想用UITableView创build自定义UIViewController,使用xib文件加载UIViewController,并将视图作为子视图添加到另一个UIView。 层次是这样的: 的UIViewController UIView <<添加自定义UIViewController的视图 的UIView 的UIView 这是我的xib视图层次和设置: 的UIView UITableView的 在IB连接: 文件的所有者:CustomTableViewController 奥特莱斯: 视图连接到UIView tableView连接到文件的所有者 代表连接到文件的所有者 数据源连接到文件的所有者 我有UITableDataSource和UITableDelegate实施。 当我试图添加视图作为子视图,它坠毁… – (void)viewDidLoad { [super viewDidLoad]; CustomTableViewController* controller = [[CustomTableViewController alloc] initWithNibName:@"CustomTableView" bundle:[NSBundle mainBundle]]; [self.viewContainer addSubview:controller.view]; } 我错过了什么?

为什么在调用popViewControllerAnimated时ARC不释放内存

我的项目使用ARC ,当我必须显示与导航控制器的视图我这样做: ShareViewController_iPhone *share = [[ShareViewController_iPhone alloc] initWithNibName:@"ShareViewController_iPhone" bundle:nil]; [self.navigationController pushViewController:share animated:YES]; 我可以看到在Xcode内存增加了一定的价值,然后当我解雇的观点,我这样做: [self.navigationController popViewControllerAnimated:YES]; 但是当视图closures时,内存不会减less,我该怎么做呢?

想从appdelegate调用ViewController的方法

我想在AppDelegate.m中调用ViewController的方法。 我在我的Viewcontroller有方法method()。我希望在appdelegate.m调用didSelectMethod()时调用它。 我已经打电话给这样的方法了。 ViewController *vc=[[ViewController alloc]init]; [vc method]; 方法被调用,但是与实际的方法具有相同的实例。 它具有所有的价值。 任何人都可以给我正确的代码,这是我想要的。 谢谢Jagveer Rana

是否可以从视图的NIB设置navigationitem.title?

我从一个NIB(initWithNibName)加载一个新的视图,然后我把它推入导航控制器堆栈(pushViewController)。 为了有一个适当的“后退”button,每个视图应该有一个标题。 不幸的是,我没有设法find一种方法来设置界面生成器中的视图标题。 它可以在运行时完成: – (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"MyTitle"; } 但是我没有在NIB的devise时间里做到这一点。 有没有办法呢? 谢谢。 我刚刚意识到我的问题不是100%正确的。 事实上,我正在寻找一种方法来通过NIB设置ViewController的标题。 和UIView在NIB不同于UIViewController(它有我试图改变的标题属性)。 所以我的问题是…有些不同。 🙂

一旦下一个视图控制器模态出现,就closures或删除先前的模态控制视图控制器

我的目标包括很多视图需要基于每个用户操作呈现不同的视图模式。 在这里我想要做的是获得更干净的视图层次结构和更好的用户体验。 根视图控制器模态地呈现第一视图控制器 当我点击第一个视图控制器上的button时,第二个视图控制器出现在模态上。 一旦第二个视图控制器确实出现,我想消除或从视图层次结构中删除第一个。 我可以这样做吗? 如果是这样 ,我该怎么做呢? 如果没有 ,解决这个问题的正确方法是什么,因为我将在每个视图上呈现许多模态提供的视图控制器。 我认为,即使我想解散当前的观点,当前一个解散的时候,前一个仍然会出现。 更新: VC1(根)> VC2(模态地存在)> VC3(它在 VC2上模态存在) 当我解雇VC3 , VC2仍在观看记忆中。 所以,我不想在我解雇VC3出现VC2 ,而是想通过从视图层次结构中删除或解散VC2来查看VC1 。 WANT :在图像上,当我解开蓝色的时候,我不想看到我的视觉记忆中的粉红色,并且我想在蓝色眼睛出现的时候立即将其删除。 这就是我想要做的。 任何帮助?谢谢。

刷新一个UIPageViewController

我有一个pipe理3 UIViewController的UIPageViewController ( <UIPageViewControllerDataSource>委托)。 从第二个视图到第三个视图,我必须点击一个button,否则第二个视图是最后一个可见页面。 一旦在第3页,用户应该能够滑动回到2,但不能滑动回到3(button总是需要到第3页)。 这是代码的一部分: – (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { UIViewController *prevViewController = nil; if (viewController == self.P2ViewController) { prevViewController = self.P1ViewController; } if (viewController == self.P3ViewController) { [self pageViewController:pageViewController viewControllerAfterViewController:self.P2ViewController]; /*this doesn't work*/ prevViewController = self.P2ViewController; } return prevViewController; } – (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { UIViewController *nextViewController = […]

UIView是否保留其视图控制器?

一个UIView保留它的关联视图控制器? 例如,在以下代码中,视图由父视图保留。 如果这个视图也保留了它的ViewController,那么我可以继续在loadView方法中释放控制器。 – (void) loadView { … MyViewController* ctrl = [[MyViewController alloc] init]; [self.view addSubview: ctrl.view]; [ctrl release]; } 我想,另一种方法是跟踪控制器作为实例variables,并在适当的时候释放它。 谢谢

如何将数据传递给视图控制器并在将其推送到导航堆栈之前加载它?

我有一个视图控制器与集合视图,当我单击一个单元格时,我将一个variables传递给另一个视图控制器,然后将其推到导航堆栈上。 func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("nextVC", sender: self.userArray[indexPath.row]) } 这是我如何发送variables: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { super.prepareForSegue(segue, sender: sender) let nextVC = segue.destinationViewController as! NextVC if let senderId = sender!.objectForKey("uId") { nextVC.userId = senderId as! String } } 下一个视图控制器(nextVC)有很多东西在上面。 我尽我所能去优化它,但是加载所有的东西还是需要一些时间的。 有没有一种方法可以为segue做准备,传递variables,让下一个vc做它的事情,然后当它完成加载,实际上继续它? (或显示它)? 我看到其他一些讨论预加载视图控制器的问题,但是没有一个涉及传递variables。 这个variables非常重要,因为下一个VC中的所有东西都必须知道这个variables(基于被触摸的单元格),否则将无法加载。 我希望我解释得很好,谢谢你的时间。

从SKScene展示一个UIViewController

我试图从SKScene提出一个UIViewController,我不知道如何做到这一点。 Googlesearch提供的大部分内容是如何从SKScene展示共享屏幕,但这不是我想要做的。 只是一个常规的视图控制器,将有一个button和一个标签(也可能是一个图像)。 这是我的Intro.m中的代码。 这不是游戏场景,只是带有标题,播放button和删除广告button的介绍屏幕: #import "MyScene.h" #import "Intro.h" #import "PurchasedViewController.h" @interface PurchasedViewController () -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { ….. SKSpriteNode *removeAds = [SKSpriteNode spriteNodeWithImageNamed:@"removeAds"]; removeAds.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)/6); removeAds.zPosition = 1; removeAds.name = @"RemoveAds"; [self addChild:removeAds]; } – (void)performTouches:(NSSet *)touches { for (UITouch *touch in touches) { CGPoint pointInSKScene = [self.view […]

如何在iOS上的视图之间切换

我是相当新的iOS世界,因为我来自Android的基于活动的世界,我有点混淆iOS如何pipe理视图之间的转换。 我已经创build了一个UIViewController,它以全屏显示一个login表单(这是一个针对iPad的应用程序)。 成功login后,我想切换到另一个视图,并利用UISplitViewController。 为了能够从我的初始控制器推到第二个(这也是一个UIViewController)我已经添加了一个UINavigationController与我的第一个控制器是根。 我已经将UISplitViewController添加到第二个UIViewController的xib中。 先前的Xcode抱怨说,我的第二个UIViewController没有视图出口设置,所以我基本上盲目地将其设置到我的UISplitViewController内的detailView。 结果是,第一个UIViewController确实被推开,但我没有得到显示的UISplitViewController,但我在视图sockets中设置的DetailView。 我错过了什么? 有什么必要先显示一个全屏(没有幻想,没有装饰)UISplitViewController,然后推到UISplitViewController? 我以前的尝试提供了新的故事板function,但事实certificate这更加令人困惑(即涉及到太多的魔法)。 也许我刚刚得到了iOS的一些UI范例错误。