Tag: 视图控制器

如果在视图控制器1上select了我的“button”,则图像应该显示并停留在视图控制器2上

如果用户在视图控制器1上select了我在下面创build的“button/checkbox”,那么我希望图像出现在视图控制器2上。 如果我离开视图控制器2屏幕并返回查看控制器2屏幕,则只要在视图控制器1上仍然select了该button,图像仍应该显示。 如果在视图控制器1上不再select“button”,则视图控制器2上不应再显示该图像。 请注意,上面提到的“button/checkbox”是由下面的代码创build的。 请帮忙,谢谢。 (IBAction)checkButton2:(id)sender {if(!checked2){ [_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBoxMarked.png"] forState:UIControlStateNormal]; checked2 = YES; // alert placeholder UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Locked" message:@"this is locked." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel", nil]; [alert show]; [_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal]; checked2 = NO; } else if(checked2){ [_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal]; checked2 = NO; // alert placeholder UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Character selection:" message:@"The box […]

如何在故事板中的多个视图之间传递对象,iOS Dev

我已经search了这个,但答案太简单,无法满足我:( 我想从TabBarController传递一个NSManagedObjectContext几乎在我的应用程序中的每个视图控制器。 具体来说,我的故事板结构是这样的: TabBarController >>>几个标签项目视图(这很容易通过,只需要传入一次在视图控制器)。 但是我有另外一个关系: TabBarController (上面提到的那个)>>> NavigationController >>> TableViewControllerOne >>> TableViewControllerTwo , 现在是灾难。 因为基本上我必须将NSManagedObjectContext实例从NavigationController转移到TableViewControllerOne和TableViewControllerTwo ….这可能涉及到很多prepareSegue:sender ,这并不容易pipe理。 所以我的问题是:在iOS开发中,有没有办法可以创build一个“全局”对象,我可以在整个应用程序中轻松访问? 从使用核心数据的master-detail视图的苹果官方模板,它在应用程序委托中实例化NSManagedObjectContext ,并将其传递给主视图控制器。 如果经过多次查看,必须使用这个对象呢? 哇,这是很多代码。 希望我自己清楚,有人可以帮助:)非常感谢。

通知所有加载的ViewControllers的某个事件

我有一段时间在后台同步数据。 用户可以在应用程序的导航树中的任何位置,无论用户在哪里,我都需要能够使用我刚刚同步的任何新数据来更新视图控制器。 我把负责后台线程同步的对象作为SharedAppDelegate的一个属性。 在某种程度上,我需要实现类似Observer模式的东西,每次我实例化视图控制器时,都会设置它来侦听后台同步对象上的某个事件,这样每次同步后我都可以在正在侦听的视图控制器中执行一个方法。 我不确定在Objective-C中做到这一点的正确方法是什么,或者是否有更好的或推荐的方法。

将ViewControllers的视图添加为子视图

我添加一个ViewControllers视图作为一个子视图到另一个ViewController, 例如: 在FirstScreen viewcontroller我做到这一点, [self.view addSubview:self.secondScreen.view]; 一旦我从FirstScreen中删除它,我做到这一点 [self.secondScreen.view removeFromSuperView]; self.secondScreen=nil; 但是虽然添加子视图ViewDidLoad方法被调用,但removeFromSuperView ViewDidUnLoad不被调用。 我的问题 1)当我将self.secondScreen设置为零时,我的第二个屏幕中的所有对象都将被释放 2)这样做是否安全,这样我不会得到任何泄漏或记忆警告

当应用程序变为活动状态时,viewWillAppear不会在我的视图控制器中调用

免责声明:我是iOS的noob。 我使用Xcode的模板创build了一个基于视图的应用程序,将图片上传到网站。 Xcode自动为我创build了AppDelegate.m(&.h)和ViewController.m以及一个storyboard。 该应用程序使用URL架构从网站启动,并在视图控制器中使用该信息。 我有两个问题: 1)这是一个很好的方式从我的AppDelegate传递查询string到视图控制器? 我有一个名为queryStrings我的AppDelegate中存储查询string的NSDictionary属性。 然后在viewWillAppear在我的视图控制器我使用下面的代码来访问它: AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; NSDictionary *queryStrings = appDelegate.queryStrings; wtID = [queryStrings valueForKey:@"wtID"]; 2)当应用程序已经启动,但在后台,用户通过网页上的url(使用不同的查询string)再次打开应用程序,我已经实现了AppDelegate中的openURL,它填充我的AppDelegate中的queryStrings属性。 问题是:视图控制器的viewWillAppear方法永远不会被调用,所以上面的代码不会被执行。 如何获取查询string数据到视图控制器? 视图控制器如何知道该应用程序刚刚变为活动? 注意:因为该项目是使用Xcode中的“基于视图的应用程序”模板创build的,所以我的AppDelegate的唯一属性是窗口属性。 我无法知道我的视图控制器甚至被AppDelegate引用的代码中的位置…它从来没有被设置为rootViewController或代码中的任何东西……我想这只是一些IB魔法,我看不到。 万一它有帮助,这是我的AppDelegate.h: #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) NSDictionary *queryStrings; @end 这里是我didFinishLoadingWithOptions,openURL和我的帮手方法:parseQueryString: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { […]

了解addChildViewController的使用

我正在处理一些我需要重构的代码。 视图控制器充当另外两个视图控制器的容器,并将在它们之间进行交换,如下面的代码所示。 这可能不是最好的devise。 以这种方式交换视图控制器可能不是必需的。 我明白那个。 但是,当我使用这段代码时,我想进一步理解addChildViewController调用会发生什么。 在苹果的文档或相关问题中,我一直无法find答案(可能表明devise需要改变)。 具体来说 – 容器视图控制器如何处理要求添加子视图控制器的情况? 它是否认识到它已经添加了视图控制器对象? 例如,如果下面的代码是在一个方法 – 这种方法被称为两次… [self addChildViewController:viewControllerB]; [self.view addSubview:viewControllerB.view]; [viewControllerB didMoveToParentViewController:self]; [viewControllerA willMoveToParentViewController:nil]; [viewControllerA.view removeFromSuperview]; [viewControllerA removeFromParentViewController]; 谢谢,加文

不能调用非函数types的值'String'

我试图将ILTItemvariables传递到我的ILTViewController,当用户通过深层链接启动我的应用程序时,由AppDelegate.swift触发。 我有错误的代码: 不能调用非函数types的值'String' 在我定义ilt的行上。 这是我现在的代码: let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate var ilt = ILT(homeworkID: 1234, title: "History ILT", subject: "History", teacher: "Miss A Smith", teacherCode: "asmith", studentID: 12345, description: "Description….", due: 1450137600, status: "In Progress", hasAttachments: true) var newVC = ILTViewController() newVC.ILTitem = ilt appDelegate.window?.addSubview(newVC.view) 为什么会这样? 在我的ILTViewController类中,我有: class ILTViewController: UIViewController { // accept the […]

在iOS中按“后退”button时如何创build确认popup窗口?

我想添加一个popup,当有人推我的iOS应用程序的“后退”button,要求用户,如果他真的想回来。 然后,根据用户的反应,我想撤消该操作或继续。 我已经尝试在View的ViewWillDisappear函数中添加代码,然后编写适当的代理,但是它不起作用,因为它总是改变视图,然后显示popup窗口。 我的代码是: -(void) viewWillDisappear:(BOOL)animated { _animated = animated; if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { UIAlertView *alert_undo = [[UIAlertView alloc] initWithTitle:@"UIAlertView" message:@"You could be loosing information with this action. Do you want to proceed?" delegate:self cancelButtonTitle:@"Go back" otherButtonTitles:@"Yes", nil]; [alert_undo show]; } else [super viewWillDisappear:animated]; } 代表实现是: – (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { NSString *title = [alertView […]

dismissViewController:不工作

我有一个名为vc0的视图控制器,它是这样呈现的: [self presentViewController: vc1 animated: YES completion: nil]; 而在VC1我有一个button来呈现另一个视图控制器: [self presentViewController: vc2 animated: YES completion: nil]; 然后在vc2中,我有一个button来closures视图控制器: [self dismissViewControllerAnimated:YES completion: ^{ // over here I call one method in vc1 } 和预期的一样,它会返回到vc1 ..但是在vc1中有一个button可以通过closures视图控制器来返回到vc0,如下所示: [self dismissViewControllerAnimated:YES completion:nil]; 但由于某种原因,它不起作用,视图控制器不会被解雇回vc0。 当我第一次出现vc1时,我可以按下button来closures视图控制器,它的工作原理。 但是当我按下button打开vc2,并且当我将vc2退回到vc1时,那么我按下buttonclosures视图控制器,即当它不工作时。 对不起,如果这个问题有点不清楚,我想说一下我想说的话有点难。 还有一件事: 我尝试更换dismissViewControllerAnimated:在dismissViewControllerAnimated:手动呈现vc0,但后来我在控制台中得到一个日志,说我想呈现一个vc0,但vc1的视图不在窗口层次结构。 这是什么意思? 感谢帮助! 更新: 在这种情况下,VC0是MenuMileIndexViewController – VC1是FlightViewController – VC2是BookmarksTableViewController 这是涉及的代码: MenuMileIndexViewController: – (IBAction)goToOriginPage { […]

iOSclosures和呈现视图控制器自定义animation

我有一个视图控制器,我提出了以下目标c代码: CATransition *animation=[CATransition animation]; animation.delegate=self; animation.duration=0.3; animation.type=kCATransitionMoveIn; animation.subtype=kCATransitionFromRight; [self presentViewController:reader animated:NO completion:nil]; [reader.view.layer addAnimation:animation forKey:@"animation"]; 并在委托方法内用类似的代码解雇 CATransition *animation=[CATransition animation]; animation.delegate=self; animation.duration=0.3; animation.type=kCATransitionMoveIn; animation.subtype=kCATransitionFromLeft; [self dismissViewControllerAnimated:NO completion:nil]; [self.view.layer addAnimation:animation forKey:@"animation"]; 然而,有一个问题:不像使用导航控制器,你看到一个视图滑动到其他视图; 这里旧视图就会立即消失,所以新视图移到空白视图上。 我该如何解决这个问题? 我需要这个代码在iOS 6,7和8中工作,并希望它看起来像你在导航控制器内部的视图之间来回看到的水平animation。 编辑:我接受的解决scheme有一个与iOS 6的错误,如果我能find一个解决scheme修复它,我会编辑这个职位。 编辑2:find它。 看来,因为我提出了一个zBar视图控制器,我需要使用此代码 zbarController.wantsFullScreenLayout=NO; 我设置cameraOverlayView后。