标签: uiviewcontroller

鉴于一个观点,我如何获得它的viewController?

我有一个指针UIView.我如何访问它UIViewController[self superview]是另一个UIView,但不是UIViewController,对吧?

iphone debugging uiviewcontroller uiview ios

129
推荐指数
6
解决办法
11万
查看次数

故事板 - 参考AppDelegate中的ViewController

考虑以下场景:我有一个基于故事板的应用程序.我将一个ViewController对象添加到storyboard中,将此ViewController的类文件添加到项目中,并在IB身份检查器中指定新类的名称.现在我将如何从AppDelegate以编程方式引用此ViewController?我已经使用相关类创建了一个变量并将其转换为IBOutlet属性,但我没有看到任何方法能够在代码中引用新的ViewController - 任何尝试按住Ctrl键拖动连接都不起作用.

即在AppDelegate中我可以像这样到达基本的ViewController

(MyViewController*) self.window.rootViewController
Run Code Online (Sandbox Code Playgroud)

但故事板中包含的任何其他ViewController怎么样?

iphone objective-c storyboard uiviewcontroller ios

122
推荐指数
3
解决办法
12万
查看次数

在AppDelegate.m的屏幕上获取当前显示的UIViewController

UIViewController屏幕上的当前需要通过设置徽标视图来响应来自APN的推送通知.但我怎么能得到UIViewControllerin方法application:didReceiveRemoteNotification:AppDelegate.m

我尝试使用self.window.rootViewController获取当前显示UIViewController,它可能是一种UINavigationViewController或其他类型的视图控制器.我发现可以用来获取屏幕上的visibleViewController属性.但如果它不是,我该怎么办?UINavigationViewControllerUIViewControllerUINavigationViewController

任何帮助表示赞赏!相关代码如下.

AppDelegate.m

...
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    //I would like to find out which view controller is on the screen here.

    UIViewController *vc = [(UINavigationViewController *)self.window.rootViewController visibleViewController];
    [vc performSelector:@selector(handleThePushNotification:) withObject:userInfo];
}
...
Run Code Online (Sandbox Code Playgroud)

ViewControllerA.m

- (void)handleThePushNotification:(NSDictionary *)userInfo{

    //set some badge view here

}
Run Code Online (Sandbox Code Playgroud)

iphone uiviewcontroller push-notification ios

119
推荐指数
10
解决办法
17万
查看次数

如何禁用UIPageViewController的滑动手势?

在我的情况下,父UIViewController包含UIPageViewController哪个包含UINavigationController哪个包含UIViewController.我想向最后一个视图控制器添加滑动手势,但滑动处理就像它们属于页面视图控制器一样.我尝试以编程方式和通过xib执行此操作,但没有结果.

据我了解,在UIPageViewController处理手势之前我无法实现目标.如何解决这个问题?

uiviewcontroller uigesturerecognizer ios uipageviewcontroller

114
推荐指数
9
解决办法
7万
查看次数

如何使用单个故事板uiviewcontroller为多个子类

假设我有一个包含UINavigationController初始视图控制器的故事板.它的根视图控制器是子类UITableViewController,它是BasicViewController.它已IBAction连接到导航栏的右侧导航按钮

从那里我想使用故事板作为其他视图的模板,而无需创建其他故事板.假设这些视图具有完全相同的接口,但具有类的根视图控制器,SpecificViewController1并且SpecificViewController2是其子类BasicViewController.
除了IBAction方法之外,这两个视图控制器将具有相同的功能和接口.
它将如下所示:

@interface BasicViewController : UITableViewController

@interface SpecificViewController1 : BasicViewController

@interface SpecificViewController2 : BasicViewController
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?
我可以实例化故事板BasicViewController但是具有根视图控制器的子类SpecificViewController1SpecificViewController2

谢谢.

cocoa-touch objective-c storyboard uiviewcontroller ios5

112
推荐指数
7
解决办法
2万
查看次数

如何创建自定义iOS视图类并实例化其多个副本(在IB中)?

我目前正在制作一个具有多个计时器的应用程序,基本上都是相同的.

我想创建一个自定义类,它使用定时器的所有代码以及布局/动画,因此我可以有5个相同的定时器,它们彼此独立地运行.

我使用IB(xcode 4.2)创建了布局,并且定时器的所有代码当前都在viewcontroller类中.

我很难将我的大脑包装成如何将所有内容封装到自定义类中,然后将其添加到viewcontroller,任何帮助都将非常感激.

xcode class uiviewcontroller uiview ios

110
推荐指数
4
解决办法
9万
查看次数

什么是StoryBoard ID,我该如何使用它?

我是IOS的新手,最近开始使用Xcode 4.5.我看到每个viewController我都可以设置一些身份变量,包括故事板ID.这是什么以及如何使用它?

在此输入图像描述

我开始在stackoverflow上搜索,但找不到任何解释.我认为这不仅仅是一些愚蠢的标签,我可以设置为记住我的控制器吗?它有什么作用?

xcode storyboard uiviewcontroller ios

109
推荐指数
2
解决办法
8万
查看次数

检查视图控制器是以模态方式呈现还是在推理堆栈上推送

在我的视图控制器代码中,我如何区分:

  • 以模态呈现
  • 推送导航堆栈

这两个presentingViewControllerisMovingToParentViewControllerYES在这两种情况下,所以都不是很有益的.

令我感到困惑的是,我的父视图控制器有时是模态的,在其上推送要检查的视图控制器.

事实证明我的问题是我将我HtmlViewControllerUINavigationController内容嵌入了一个然后呈现的内容.这就是为什么我自己的尝试和下面的好答案都不起作用的原因.

HtmlViewController*     termsViewController = [[HtmlViewController alloc] initWithDictionary:dictionary];
UINavigationController* modalViewController;

modalViewController = [[UINavigationController alloc] initWithRootViewController:termsViewController];
modalViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:modalViewController
                   animated:YES
                 completion:nil];
Run Code Online (Sandbox Code Playgroud)

我想我最好告诉我的视图控制器何时是模态,而不是试图确定.

objective-c uiviewcontroller uinavigationcontroller ios swift

109
推荐指数
8
解决办法
9万
查看次数

View Controller Containment如何在iOS 5中运行?

在2011年WWDC会话102,苹果推出视图控制器遏制,这是创建定制的视图控制器容器的能力,类似于UITabBarController,UINavigationController和类似物.

我多次看过这些例子.有一系列与这种模式相关的方法,但有点难以弄清楚它们.我将在这里发布我认为正在发生的事情,看看社区是否会确认或否定我的怀疑.

场景1:从无父节点移动到新的父视图控制器

[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view]; // or something like this.
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

前两行必须按给定的顺序发生,还是可以反转?

场景2:从父视图控制器移动到没有父视图控制器

[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)

还有必要打电话[vc didMoveToParentViewController:nil]吗?会话102中的示例在这种情况下没有这样做,但我不知道这是否是遗漏.

场景3:从一个父视图控制器移动到另一个父视图控制器

这可能以下列方式发生,因为将封装每个父视图控制器中的逻辑.

// In the old parent
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];

// In the new parent
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view];
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

问题

我的主要问题是:一般来说,视图控制器包含应该如何工作?上面给出的机制是否正确?

是否有必要在打电话willMoveToParentViewController前打电话addChildViewController?这对我来说似乎是合乎逻辑的顺序,但它是否是必要的?

打电话didMoveToParentViewController:nil后有必要打电话removeFromParentViewController吗?

uiviewcontroller ios ios5

107
推荐指数
2
解决办法
5万
查看次数

popViewController的完成块

当使用时解除模态视图控制器时dismissViewController,可以选择提供完成块.是否有相似的等价物popViewController

完成论证非常方便.例如,我可以使用它来阻止从tableview中删除一行,直到模态关闭屏幕,让用户看到行动画.从推出的视图控制器返回时,我想要同样的机会.

我已经尝试放置popViewController一个UIView动画块,我可以访问完成块.但是,这会对弹出的视图产生一些不必要的副作用.

如果没有这样的方法,有什么办法吗?

cocoa-touch uiviewcontroller uiview uiviewanimation ios

105
推荐指数
13
解决办法
5万
查看次数