标签: loadview

可以调用[super loadView]吗?

我以为我永远不应该调用[super loadView],但有些东西让我感到困惑.

在loadView(UIViewController类参考)的描述中,它说"你的自定义实现这个方法不应该调用super.",但是在他们给出的ZoomingPDFViewer示例中,loadView实现(ZoomingPDFViewerViewController)正在调用[super loadView].

我试图从我的loadView方法调用它,它工作正常,但我只是不明白那么不调用超级是什么意思.

uiviewcontroller loadview ios

25
推荐指数
1
解决办法
6260
查看次数

强制viewDidLoad在iOS上触发

我有两个窗口应用程序,当我呈现第一个窗口时,我希望第二个窗口中的视图加载并准备以后在后台的内容.

我试过使用方法,loadView但Apple说你不应该直接调用这个方法.

到目前为止,我已经选择使用视图的方法userInteractionEnabled,它实际上隐式调用viewDidLoad方法.

是否有一种优雅的方法可以强制ViewControllers viewDidLoad方法在自然之前(当窗口是关键并呈现时)进行激活?

iphone viewdidload loadview ios

22
推荐指数
3
解决办法
9436
查看次数

在loadView中确定正确的大小

如何在loadView中一致地确定正确的大小来布局视图?

我有不同的情况,其中UIViewController被推送到UINavigationController,或UITabBarController存在,或两者兼而有之.如果我硬编码值,这些元素会更改可用的屏幕区域并使其不一致.

在调用loadView的那一刻,我想知道如何调整容器视图的大小,我将我的子视图添加到.

我查看了UIViewController指南,Apple使用了UIScreen mainScreen applicationFrame,但在他们的示例中,这是因为他们正在制作一个全屏应用程序.

我在这里看到了一些答案,但没有一个能够以一致的方式解决这个问题.

谢谢你给予的任何帮助.

cocoa-touch uiviewcontroller loadview ios

20
推荐指数
3
解决办法
8763
查看次数

viewDidLoad(),LoadView()

viewDidLoad()LoadView()有什么区别?它们以何种方式彼此不同?

在不使用XIB开发应用程序时哪一个更好?

谢谢 .

iphone objective-c viewdidload loadview

16
推荐指数
4
解决办法
3万
查看次数

loadView:UIView iOS中的函数

我不明白loadView:函数的机制(这个函数在UIView中).

我创建了一个项目如下:

  • 首先,我创建了一个iPhone的基于窗口的项目.
  • 然后,我创建了一个UIView子类
  • 接下来,我创建了一个UIViewController没有xib 的子类.
  • 最后,在loadView:我在第三步中创建的类的函数中,我将UIView对象(在我在第二步中创建的类)指定为对象的视图变量UIViewController(在第三步中).

如果我省略了最后一步,并将语句NSLog(@"test LoadView");放在loadView:函数中,那么当项目运行时,语句NSLog(@"test LoadView");会被连续调用,导致运行溢出.

请解释一下!谢谢!

objective-c uiviewcontroller uiview loadview ios

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

在loadView方法中计算视图大小的最佳实践

loadViewUIViewController没有XIB文件的情况下计算方法中的视图大小的最佳做法是什么?

这是我的解决方案:

- (void)loadView {

  //Calculate Screensize
  BOOL statusBarHidden = [[UIApplication sharedApplication] isStatusBarHidden ];
  BOOL navigationBarHidden = [self.navigationController isNavigationBarHidden];
  BOOL tabBarHidden = [self.tabBarController.tabBar isHidden];

  CGRect frame = [[UIScreen mainScreen] bounds];

  if (!statusBarHidden) {
    frame.size.height -= [[UIApplication sharedApplication] statusBarFrame].size.height; 
  }
  if (!navigationBarHidden) {
    frame.size.height -= self.navigationController.navigationBar.frame.size.height; 
  }
  if (!tabBarHidden) {
    frame.size.height -= self.tabBarController.tabBar.frame.size.height; 
  }

  UIView *v = [[UIView alloc] initWithFrame: frame];
  [v setBackgroundColor: [UIColor whiteColor] ];
  [v setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];
  [self setView: v ];
  [v release]; …
Run Code Online (Sandbox Code Playgroud)

uiviewcontroller loadview ios

7
推荐指数
1
解决办法
3341
查看次数

覆盖UITableViewController子类中的loadView

我正在尝试设置一个UITableViewController,以便它的tableView属于我的自定义子类.我的loadView方法目前看起来像这样:

- (void) loadView {
   MyTableViewSubclass* tv = [[[MyTableViewSubclass alloc]initWithFrame: CGRectZero style: UITableViewStylePlain]autorelease];
   self.view = tv;
   self.tableView = tv;
}
Run Code Online (Sandbox Code Playgroud)

如果我评论出上述方法,我会在之后发生崩溃.所以缺少一些东西.但是什么?

Apple的文档我不应该在loadView中调用super.这是有道理的,因为我希望视图有我的课程,而不是他们的课程.

我尝试过的事情没有帮助:

  • 重写loadView方法,以便创建一个普通的UITableView.这告诉我问题的根源不在于我的子类的实现.
  • 从我的loadView方法调用[super viewDidLoad].从Apple的文档中,我不清楚该方法是从loadView调用还是之后调用.无论如何,将它添加到我的loadView方法的末尾并没有帮助.

我试过的一件事确实解决了这个问题,但却失败了:

  • 注释掉我的loadView方法.

编辑:崩溃如下所示.它发生在用户做一些输入之后.如果我创建一个普通的UITableView而不是我的子类,它也会以相同的方式发生.应用程序中有很多内容,我的loadView覆盖[或者更有可能的是,覆盖中缺少的东西]导致状态不同,从而导致崩溃.但我没有看到追踪不同之处的好方法.

2011-09-08 12:44:59.591 MyAppName[97649:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[MyTableViewSubclass scrollToRowAtIndexPath:atScrollPosition:animated:]: row (0) beyond bounds (0) for section (0).'
Run Code Online (Sandbox Code Playgroud)

iphone uitableview loadview

6
推荐指数
1
解决办法
3943
查看次数

用我自己的视图替换 UIViewController 根视图

我正在尝试用子类 UIView 替换 UIViewController 根视图。

在 iPhone SDK 的 UIViewController 类参考中,在它的概述部分中,说明了这一点:

您使用 UIViewController 的每个实例来管理全屏视图。对于一个简单的视图控制器,这需要管理负责呈现应用程序内容的视图层次结构。典型的视图层次结构由一个根视图(此类的视图属性中提供的引用)和一个或多个呈现实际内容的子视图组成。

在视图属性上的链接之后,它指出:

如果您的视图控制器没有关联的视图控制器,您应该覆盖 loadView 方法并使用它来创建根视图及其所有子视图。

如果这段代码放在 loadView 中,它会创建根视图,假设我使用的是我自己的 UIView 子类 MyView:

self.view = [MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
Run Code Online (Sandbox Code Playgroud)

谢谢 // :)

iphone objective-c uiviewcontroller loadview

5
推荐指数
1
解决办法
7410
查看次数

使用loadView时无限循环

在UIViewController中使用loadView时非常有趣的问题.

通常我们这样使用

// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
    NSLog(@"loadview");
    [super loadView];
}
Run Code Online (Sandbox Code Playgroud)

如果删除

 [super loadView];
Run Code Online (Sandbox Code Playgroud)

我们将得到这个死循环

- (void)loadView {
    NSLog(@"loadview");

}
Run Code Online (Sandbox Code Playgroud)

为什么?

loadview ios

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

调用[super loadView]有什么副作用

在文档中loadView,Apple声明:

您对此方法的自定义实现不应该调用super.

所以我试着[super loadView]用我的loadView方法调用.似乎没有什么不好的事情发生,没有任何警告.我正在使用以编程方式创建的视图loadView,而不是来自NIB.

我打电话时会发生什么(如果有的话)坏事[super loadView]

cocoa-touch uiviewcontroller uiview loadview ios

4
推荐指数
1
解决办法
663
查看次数