Tag: uiviewcontroller

带有inputAccessoryView的UIViewController不会被释放

我有简单的UIViewController的子类(下面的代码)。 如果我附上inputAccessoryView,我的viewcontroller永远不会被释放。 如果我不在viewDidLoad中设置inputAccessoryView,则按预期方式调用dealloc。 我错过了什么吗? @interface IMTestViewController : UIViewController @property (nonatomic, strong) UIView *messageInputView; @property(nonatomic, readwrite, strong) UIView *inputAccessoryView; @end @implementation IMTestViewController – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } – (void)dealloc { } – (void)viewDidLoad { [super viewDidLoad]; self.inputAccessoryView = self.messageInputView; } […]

以编程方式在委托中调用故事板

我试图以编程方式调用我的故事板。 我的故事板包含以下内容: [导航控制器] – > [MainMenuView] – > [DetailsView] “MainMenu”标识符被放置在[MainMenuView] 我遇到的问题是屏幕显示空白。 我需要做什么? 谢谢。 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; MainMenuView *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainMenu"]; return YES }

UIViewController半屏“抽屉滑动”animation

我想有一个UIViewController出现在右边的“幻灯片”animation。 不像一个推塞格,不喜欢Facebook的应用程序。 我想要新的ViewController滑动当前的TOP(不推)它,但只覆盖屏幕的一部分,而其他部分显示第一个ViewController。 我所尝试过的:我所得到的最接近的是通过创build一个自定义的segue与以下内容: – (void)perform { __block UIViewController *src = (UIViewController *) self.sourceViewController; __block UIViewController *dst = (UIViewController *) self.destinationViewController; CATransition* transition = [CATransition animation]; transition.duration = .50; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionMoveIn; transition.subtype = kCATransitionFromRight; [src.navigationController.view.layer addAnimation:transition forKey:@"SwitchToView1"]; [src.navigationController pushViewController:dst animated:NO]; } 这实现了我所要做的animation,但它覆盖了整个第一个ViewController。 我如何让它在某个时候停下来,而不是覆盖整个事物呢? 我正在使用故事板,这是我第一次尝试任何一种新的animation。

子视图控制器旋转方法不被调用

概要 我正在尝试将子视图控制器添加到父视图控制器,并有父视图控制器通知子视图控制器的旋转事件。 但是,旋转消息不会被转发到子视图控制器(这是默认行为)。 为什么这个默认行为不会发生? 环境:iOS 7,XCode 5,OSX 10.9 细节: 我正在按照Apple文档中的说明实现一个自定义容器视图控制器: “创build自定义容器视图控制器” 。 我试图build立一个简单的父母子女关系,转发轮换事件。 总层次结构如图14-1所示: ParentViewController ——–> RootView | / \ | / \ ˅ / \ ChildViewController —> ChildView \ \ OverLayView 我正在使用parentViewController(unityViewController = childViewController,unityView = childView)中的文件清单4-1中的代码完成此操作: // In the ParentViewController // Called by the Application Delegate in application:didFinishLaunchingWithOptions: – (void)addUnityViewController:(UIViewController *)unityViewController withUnityView:(UIView *)unityView { […]

正确的loadView实现

苹果的文档没有说什么正确的实施是为loadView。 我发现,如果你实现像这样的loadView: – (void)loadView { self.view = [[UIView alloc] init]; } …然后你会得到不同的行为,如果你根本没有实现它。 特别是,在一个20行的项目中,我发现viewWillAppear被调用self.view的零大小的框架 – 除非你使用苹果的默认版本的loadView。 在Google上看,有很多“教程”提供了明显错误的loadView实现 – 例如,强制将大小设置为(320,480),因为教程作者“发现它可以工作,如果我这样做”。 我想知道正确的实施应该是什么。 注意:在我上面的示例中,我将它添加到AppDelegate中的视图层次结构中,如下所示: [self.window addSubview:(UIViewController*).view]; 我相信,在UINavigationController或UITabBarController的存在下,苹果会做一些额外的魔术 – 作为一个副作用 – 导致单行loadView实现工作正常。 但是我想把它写得正确,所以它总是有效的! 注意:我已经尝试在根视图上设置自动调整屏蔽,但它不会改变发生的事情: – (void)loadView { self.view = [[UIView alloc] init]; self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; }

在Swift中的PageViewController当前页面索引

我想获得一个pageViewController的当前索引,我不知道如何得到可见的页面索引。 func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool,previousViewControllers: [UIViewController],transitionCompleted completed: Bool) { // How to get it? }

如何解除用presentModalViewController打开的视图控制器:

我介绍了一个使用presentModalViewController:的视图控制器presentModalViewController:现在如何closures/解除它?

将子控制器添加到表视图单元格时,不会调用viewWillAppear

当我添加子视图控制器到表视图单元格,它看起来像viewWillAppear为子视图控制器不调用,只有viewDidAppear 。 表视图控制器方法: override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("ShopInfoTableViewCell", forIndexPath: indexPath) as! ShopInfoTableViewCell self.addChildViewController(self.shopInfoViewController, toView: cell.containerView) return cell } 视图控制器类别方法: – (void)addChildViewController:(UIViewController *)childController toView:(UIView *)view { [self addChildViewController:childController]; [view addSubview:childController.view]; [childController didMoveToParentViewController:self]; [childController.view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(view.mas_top); make.bottom.equalTo(view.mas_bottom); make.left.equalTo(view.mas_left); make.right.equalTo(view.mas_right); }]; } 任何想法,为什么发生?

在视图控制器上添加导航栏

我在iOS上是新的,我想添加一个导航栏在我的视图控制器与左边的2个button和订阅权。 我没有任何线索如何做到这一点..现在我刚从界面生成器添加了一个导航栏,创build一个(强)refrnce在.h文件中,并做了以下编码。 navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 1026, 50)]; [navBar setTintColor:[UIColor clearColor]]; [navBar setBackgroundColor:[UIColor redColor]]; [navBar setDelegate:self]; [self.view addSubview:navBar]; UIBarButtonItem *bi1 = [[UIBarButtonItem alloc] initWithTitle:@"subscribe" style:UIBarButtonItemStyleBordered target:self action:@selector(editBotton)]; bi1.style = UIBarButtonItemStyleBordered; bi1.tintColor =[UIColor colorWithWhite:0.305f alpha:0.0f]; self.navigationItem.rightBarButtonItem = bi1; 但nothings发生..请帮助

在Storyboard中制作的容器视图不会以编程方式更改框架

我有一个容器视图, @property (weak, nonatomic) IBOutlet UIView *containerView; ,但是当我设置它的框架时它不会移动。 这是我如何尝试: – (void)setFramesForCategories { CGRect frame = _containerView.frame; frame.origin.x = 20; frame.origin.y = self.view.frame.size.height – 52; frame.size.width = 236; frame.size.height = 60 * [[_dataDict objectForKey:@"Key"] count]; _containerView.frame = frame; } 我知道这是基本的,并且在我以前以编程方式创build的对象时,它已经为我工作,但它现在不适合我。