ViewDidUnload和ShouldAutorotateToInterfaceOrientation在MonoTouch中的替代方法

5

随着iOS 6的推出,viewDidUnloadshouldAutorotateToInterfaceOrientation已被弃用,那么在MonoTouch中应该用什么来替代它们呢?

2个回答

7

ViewDidUnload()方法可以直接删除。如果您在该方法中有代码,则需要将其移动到ViewWillDisappear()方法中,并将对应的代码移至ViewWillAppear()方法中。相关的WWDC 2012演讲包括第236集(视图控制器的演变)和第200集(Cocoa Touch的新功能)。

ShouldAutoRotateToInterfaceOrientation()方法已被SupportedInterfaceOrientations()取代。请在此处查看:http://dhilipsiva.com/2012/07/25/ios-6-ui-interface-orientation-shouldautorotatetointerfaceorientation-not-working.html


6

viewDidUnload

iOS6不再调用viewDidUnloadviewWillUnload。Xamarin发布的MonoTouch 6版本说明中也提到了这一点,详见苹果文档

shouldAutorotateToInterfaceOrientation

iOS6引入了两个新方法(在MonoTouch中也可用),可以重写这些方法来实现相同的功能。有关shouldAutorotateToInterfaceOrientation选择器的更多详细信息,请参见苹果文档

请注意,shouldAutorotateToInterfaceOrientation仍然会被调用(虽然已经被弃用并且不鼓励使用,但如果您支持旧版iOS,则仍然可用)。


如果我针对的是5.1版本,为什么还会收到这些警告?如果设备正在运行5.1,那么这些方法会被调用吗? - Jonas Stawski
由于MonoTouch 6与iOS6 API“同步”,而[Obsolete]允许C#编译器发出警告(但编译器不知道你的目标是什么)。 iOS 5.1没有改变,因此viewDidUnloadviewWillUnload将像以前一样被调用(即它是iOS而不是MonoTouch停止调用它们)。 - poupou
这是否意味着在iOS 6中发布了一套方法(或检查),而在旧版本中则完全不同?我知道旋转系统现在是根据plist和SupportedInterfaceOrientations方法的信息进行操作,但这种方法是否得到支持并在旧版中调用?我怀疑我们应用程序的每个用户都会升级到iOS 6,因此更清晰地说明我应该如何处理这些过时警告将是受欢迎的。目前我只是忽略它们,但我也几乎不能说这样做是安全的。 - Lasse V. Karlsen
@LasseV.Karlsen,我和Xamarin都没有访问iOS代码的权限。另一方面,苹果已经必须检查您是否覆盖/实现了shouldAutorotateToInterfaceOrientation(例如使用respondToSelector),因此在iOS内部添加第二个检查非常容易(而且便宜)对于苹果来说。有关废弃的更多详细信息,请参见http://stackoverflow.com/q/12786161/220643的答案。 - poupou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接