Tag: uiviewcontroller

UIViewController子类不能分配实例variables

这对我来说完全是莫名其妙,让我觉得我错过了一些必要的东西。 但我试图创build一个视图控制器容器来pipe理两个窗格(类似于SplitViewController,但有一些关键的区别)。 我几乎没有开始build造这个class,所以我现在只有3个iVar: @implementation SplitViewController{ BOOL _showLeftPane; UIViewController *_leftController; UIViewController *_rightController; } 无论我做什么,我都不能将视图控制器分配给_leftController iVar。 大多数情况下,_rightController iVar可以分配。 它变得更加怪异。 如果我切换iVars的顺序,所以_rightController出现在_leftController之前,我不能在第一次尝试中分配任何一个。 但是,如果我再试一次(字面上写两次)_leftController将采取。 一致的是,当我使用控制台在赋值后立即请求iVar声明中列出的第一个控制器的值时,我得到的值是(UIViewController *) $5 = 0x00000001 [no Objective-C description available] 。 WTF? 出于好奇(因为我可以…我几乎没有开始写类)我把超级从UIViewController更改为NSObject。 当我这样做,分配工作。 实际上,赋值就是关于在loadView上创build一个空白视图的所有这个类。 我错过了什么? 更新代码的其余部分: 整个.h文件: #import <UIKit/UIKit.h> @interface SplitViewController : UIViewController @property (strong) UIViewController *leftViewController; @property (strong) UIViewController *rightViewController; @end 整个.m文件(注意,我试过综合属性,除了难以从控制台debugging外,其他行为都是一样的): @implementation SplitViewController{ BOOL […]

在ViewController中创build数组期望的声明错误,不能解决原因

首先,我正在使用Xcode 6 beta 2.其次,我有编程经验(基本的VB,脚本语言),但它不包括任何严重的OO编程,而且我对IOS编程也是全新的。 直接进入Swift。 提前感谢那些能够帮助的人。 这几天我一直在苦苦挣扎。 无法构build简单的UIImage数组。 (为了简单起见,我已经把所有其他的代码都去掉了)。我试图理解为什么声明一个UIImage数组和加载图像在viewDidLoad()中工作,而不是ViewController的“基础”,这是我似乎需要它为其他事情工作。 (我注意到它似乎与这是一个数组声明,这进一步混淆的事实,我可以声明和分配简单的UIImagevariables在任何位置)。 这是我的代码: // ViewController.swift import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } var icon […]

将图像传递给另一个视图控制器(Swift)

我试图将一个用户上传的图像从一个UIImageView移动到另一个视图控制器上的另一个UIImageView 。 我能够让用户上传一个图像,并保存在第一个UIImageView,但他们按下“后”button后,下一个视图控制器上的UIImageView保持空白。 注意:browsingImage是第二个视图控制器(目标UIImageView)上的UIImageView的名称。 任何帮助将不胜感激! @IBAction func cameraButton(sender: AnyObject) { addNewPicture() } func addNewPicture() { let picker = UIImagePickerController() picker.allowsEditing = true picker.delegate = self presentViewController(picker, animated: true, completion: nil) } func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { postingImage.image = image self.dismissViewControllerAnimated(true, completion: nil) } @IBAction func postButton(sender: AnyObject) { performSegueWithIdentifier("toBrowsePage", […]

支持iOS 6和iOS 5自转

任何人都可以证实,支持iOS 6和iOS 5,没有必要添加新的iOS 6自动旋转方法,因为苹果文档build议如果您也实现iOS 5方法,这些方法完全被忽略了吗? 特别是,我讲的方法- (NSUInteger)supportedInterfaceOrientations和- (BOOL) shouldAutorotate – 这些被编译器忽略和合成,如果你还实现了- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

可以在后台线程上创build一个UIView吗?

我知道UIView不是线程安全的,所以我不能添加一个后台线程的视图,解决这个问题是可以在后台线程上创build一个UIView然后将其添加到主线程? 注意:在主线程中不这样做的原因是因为我的实际代码复杂得多,因此需要一段时间才能创build所有视图并填充值。 当我这样做时,我不希望UI变得不响应,所以即时通讯尝试解决这个问题。 例如.. -(void)addLabel//called on background thread { UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0,0,40,100)]; [label setText:@"example"] [self.view performSelector:@selector(addSubview:) onThread:[NSThread mainThread] withObject:example waitUntilDone:YES]; } 提前致谢。

在segue完成后如何执行一些代码?

是否有可能在iOS 6中知道UIStoryboardSegue完成其转换? 就像当我从UIButton添加一个UIStoryboardSegue来UIStoryboardSegue导航UIStoryboardSegue上的另一个UIViewController时,我想在push-transition完成之后立即执行某个操作。

拆卸UIViewController时总是调用viewDidUnload和dealloc?

我想知道在UIViewController拆除过程中是否总是调用viewDidUnload和dealloc 。 有没有可能dealloc可以调用我的视图控制器没有viewDidUnload被首先调用? 无论哪种情况,如果我安全地释放了这两个方法中的属性并保留了引用,那么调用这两种方法都不会成为问题 – 但是我想知道是否有人确切地知道或者可以揭示拆除处理。 2012更新:这是很方便的注意,如果iOS 6的viewDidUnload已被弃用,应该replace为手动视图拆卸, 如果需要在didReceiveMemoryWarning 。 一个关于新的UIView / UIViewContoller的好文章,以及新的行为,它对joe conway博客的影响

在swift中从另一个访问ViewController的实例

我正试图将数据从一个视图控制器的文本字段传输到另一个视图的标签。 我如何从另一个View Controller的代码调用View Controller实例? 我正在使用故事板,因此我从来没有在代码中创build视图控制器的实例? 这些实例是否自动创build? 他们有什么名字? 谢谢你的帮助!

如何在GameScene中从ViewController中调用方法

我有一个方法,在我的viewController中有一个自定义的segue,看起来像这样: func gameOver() { performSegueWithIdentifier("GameOver", sender: nil) } 我在GameScene.swift中调用方法如下: GameViewController().gameOver() 我仔细检查了赛格的名字,这是正确的。 每当我在我的GameScene.swift文件中调用此函数,我都会收到SIGABRT消息,我不知道为什么。 我试着只用println()消息调用函数,它工作。 任何意见,为什么发生这种情况,以及如何成功地调用GameScene.swift文件中的方法将不胜感激。 谢谢! PS这里是崩溃日志: 2015-01-28 21:59:46.181 RunawaySquare[95616:3907041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<RunawaySquare.GameViewController: 0x7fe4305c7890>) has no segue with identifier 'GameEnd'' *** First throw call stack: ( 0 CoreFoundation 0x000000010d461f35 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010f39ebb7 objc_exception_throw + 45 […]

如何设置UIViewController“扩展边缘”属性

我在Storyboard中看到以下select,以便在navBars / tabBars下扩展UIViewController视图的边缘: 但是,如何在代码中为我的所有ViewController全局设置这些属性? 而不是手动检查/取消选中Storyboard中的每个ViewController。