问题标签 [viewdidappear]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1921 浏览

ios - UIViewController 在 vi​​ewWillAppear 和 viewDidAppear 之间调整自身大小?

我的项目中有一个非常奇怪的错误。我有一个UIScrollView主要的,大的观点。在它里面,我有一个UIViewController(not UITableViewController) ,它有一个UITableView实例变量,以及一些 miscellaneous UIButtons。我已将视图控制器的视图框架设置为CGRectMake(0, 64, 320, 388),因为它上方有一个标签栏(这还没有功能)。起初它工作得很好,看起来也很棒,但是一旦我呈现并关闭 a modalViewController(因此重新加载UIViewController,我相信),它会将UIViewController' 的视图推到屏幕顶部(默认情况下将其设置为CGRectMake(0, 0, 320, 460),但因为我已经设置wantsFullScreenLayoutNO,它现在将其设置为CGRectMake(0, 0, 320, 388)

我已经将此问题跟踪到 和 之间的某个viewWillAppear地方viewDidAppear。这是我解雇后的确切日志modalViewController

2011-05-06 11:08:39.974 Campus[1570:207] Frame is 0.000000, 64.000000, 320.000000, 388.000000 (viewWillAppear)
2011-05-06 11:08:40.378 Campus[1570:207] Frame is 0.00.0.0. 320.000000, 388.000000 (viewDidAppear)

如您所见,框架在 中很好viewWillAppear,但在viewDidAppear.

我做了以下事情来尝试修复它: - 在、、和
中设置所需的框架。 - 将我的设置为. - 杀死我并调用我的方法覆盖。loadViewviewDidLoadviewWillAppearviewDidAppear
wantsFullScreenLayoutNO
[super viewWillAppear:][super viewDidAppear:]

我该怎么办?!?!?

0 投票
1 回答
2835 浏览

iphone - viewDidAppear 在它实际出现之前调用?

我知道这个问题听起来与类似,但我已经知道解决方法。这更像是一个分析问题。

上面的链接是一个特定于 的问题UITabBarController,但我也观察了UINavigationController, 当 I 时的行为pushViewController:... animated:NO,即。没有动画。

所以我的问题是为什么视图出现在viewDidAppear方法之后,虽然它的名字暗示,并且定义说,该视图已经出现(定义说视图已经添加到窗口中)。

我在方法中标记了一个断点以查看调用堆栈,这是推送到的日志UINavigationController

这是日志:

0 投票
3 回答
703 浏览

iphone - iOS 不同的输出,无论是在模拟器还是在设备上运行

我又遇到了一个超级奇怪的问题。无论是在模拟器上还是在 iPhone 上运行应用程序,我都会得到不同的输出。

查看这些控制台日志:

iPhone 首次运行,点击了第一个职业单元格

模拟器 第一次运行,点击第一个职业单元格

似乎在 iPhone 上,方法是在方法之后webViewDidFinishLoad加载的。viewDidAppear

但是在模拟器上是在方法之前webViewDidFinishLoad加载的。viewDidAppear

是什么赋予了?

编辑:更奇怪的是,这仅在我单击加载具有我的 UIScrollView 和 UIWebView 的视图控制器的第一个单元格时发生。我单击该webViewDidFinishLoad方法的所有后续单元格都在该方法之前加载viewDidAppear

有什么办法可以纠正这个吗?

0 投票
4 回答
3417 浏览

ios - iOS - viewDidAppear:显示 UITableView 时延迟

我有一个奇怪的问题。我有一个选项卡栏应用程序,其中我为每个不同的选项卡使用导航控制器,每个导航控制器都有自己的视图控制器来显示一些内容。

当我触摸一个选项卡时,我希望该选项卡立即与视图一起加载,并且在它加载后(viewDidAppear:)我希望它在 viewDidAppear: 方法中下载一些数据。

为了测试这个功能,我设置了以下方法。我正在使用 aNSThread来模拟在加载视图时应该在后台完成的一些冗长操作。然后我为 NSArray *test (nonatomic, retain) 分配一些测试数据并重新加载表。

我正在重新加载表格,因为在该viewDidLoad方法中我将表格设置为仅包含一个空字符串(这是因为我读到该表格是在调用 viewDidAppear: 之前设置的。

所以我的预期行为应该是,当触摸这个特定选项卡时,它应该立即加载,然后在 10 秒后它应该填充来自 viewDidAppear: 方法的表数据。行为是,当触摸此选项卡时,它会等待 10 秒,然后显示填充了表数据的视图。

0 投票
1 回答
1566 浏览

ios - Grand Central Dispatch、viewWillAppear、viewDidAppear 执行顺序混乱

我在我的标签栏应用程序中使用 GCD 进行后台下载。

第一步是进行一些后台下载-viewWillAppear:(在加载视图之前设置一些基本数据)。

第二步是把剩下的后台下载进去-viewDidAppear:

出于某种原因,调度块 in 在调度块 in之前-viewDidAppear:调用。-viewWillAppear:

这只会在第一次加载应用程序后使用 GCD 后台方法切换到选项卡后发生一次。切换到另一个选项卡,然后使用 GCD 后台方法切换回选项卡。第三次(以及随后的所有其他时间)我切换回来的时候它按预期工作(-viewWillAppear:先开火然后再开火-viewDidAppear:)。

以下是我的代码(-viewWillAppear:-viewDidAppear:)的摘录:

-viewWill出现:

-viewDidAppear:

检查Pastie的调试日志。

0 投票
1 回答
1485 浏览

uiwebview - UIWebView:在选项卡屏幕中加载请求的位置?viewDidLoad 还是 viewDidAppear?

我有一个标签栏控制器,一个标签屏幕包含一个 web 视图,加载一个请求说 google.com,当它加载时(即在 webview 的 didload 委托方法调用之前),如果我切换到另一个标签然后返回,微调器仍在运行但页面从未加载,我猜 viewDidLoad 只调用一次,所以我应该将加载代码放在 viewDidAppear 中,还是有办法解决这个问题?

谢谢!

0 投票
2 回答
837 浏览

objective-c - 目标 C:在 viewDidAppear 中触发 IBAction showInfo

我使用 Xcode 4 中的实用程序应用程序模板创建了我的应用程序。

我希望我的应用程序在第一次启动时显示反面,以便用户可以输入 URL。

在我的 mainViewController 我有:

记录“无 url,翻转”,调用 showInfo 方法,但不翻转。我究竟做错了什么?

0 投票
2 回答
20933 浏览

objective-c - viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 指南

是否有正确使用这些方法的指导方针?特别是,我想知道我可以在其中使用什么类型的代码。

例如,如果我必须调用从 WS 检索数据的方法,我必须在哪里调用它?我在哪里可以注册/取消注册 NSNotification?等等

0 投票
2 回答
1818 浏览

iphone - 在基于标签栏的应用程序中未调用 ViewDidAppear

我有个问题。我正在开发一个基于标签栏的应用程序。在这个应用程序中,[self.view addSubview:newVC.view]当我们想要导航到新视图时调用。newVC 是我们要显示的新视图的视图控制器。[self.view removeFromSuperview]当我们想回到以前的视图时,我们也会使用。

所以换句话说,没有导航控制器。现在的问题是我想更新以前的视图。由于我们使用的是[self.view removeFromSuperview]viewDidAppear之前的视图不会被调用,因此我们无法刷新该视图。

我知道我们使用的方法有缺陷,但由于它是一个大型应用程序,并且更改它以实现导航控制器需要很多时间,所以我需要你帮助我找到这个问题的解决方案。如何在从其子视图调用时调用viewDidLoadviewDidAppear或前一个视图?[self.view removeFromSuperview]

0 投票
1 回答
3527 浏览

xcode - 应用程序启动时 viewDidAppear 中的 performSelector:withObject:afterDelay 不起作用

我必须将一些代码从 viewDidAppear 移动到一个新的选择器以在 0.1f 秒后触发。所以我做了类似的事情:

当我启动应用程序时,什么也没有发生,“开始显示”没有出现。如果我改变视图然后回到第一个视图,它就可以工作。

有人知道为什么吗?