UINavigation 控制器和委托[关闭]

Posted

技术标签:

【中文标题】UINavigation 控制器和委托[关闭]【英文标题】:UINavigation Controllers and Delegates [closed] 【发布时间】:2011-11-28 06:50:30 【问题描述】:

一些存在的疑问,我一直在研究各种网站,我有几个例子,但我有两个问题我无法澄清:

导航控制器:我已经看到了大约 10 个导航控制器示例,但我无法理解,我看到代表声明并显示主屏幕,其中也包含XIB 文件。

但是,这不是我需要的情况,我已经有我的主屏幕(窗口)要加载(在这种情况下是我的登录窗口)

我希望我称之为主屏幕的屏幕包含导航控制器,然后从那里开始,使用导航控制器移动几个屏幕。但是......当我这样做时,如果他声明它已经忙于我的登录,那么屏幕包含导航控制器?并且不希望我的应用程序有导航控制器,但只有某些特定的屏幕(因为它们取决于某些选项)。

我必须在不影响屏幕的情况下声明所有内容?啊啊啊我错过了很多,不明白这个控件(UINavigationController)。是提供服务,但不是按照我的意愿在屏幕上使用它,而不是在整个应用程序中。

什么是delegate?我用的很少,而且经常用,因为我看到了其他例子的参考,通常尽量不使用它,因为不知道如何使用它。

如果我可以解释非技术性的方式,但更容易理解的是它是所有代表。 这是什么?

如何使用?

我知道在哪里使用它吗?

我知道什么时候应该使用它。

它在高质量应用程序中使用很少或很多。**

很抱歉给您带来不便,这是因为它让我感到困惑,因为 NavigationController 在那里我留下了几个问题,如果我求助于您是因为我用完了并且需要更多资源来调查和分析示例,但我还无法理解。

【问题讨论】:

这有点啰嗦,但我怀疑 Totumus 的想法是正确的 - read up on delegates,其余的都会落实到位。 【参考方案1】:

关于您应该在 appleDocs 中阅读的 navigationController 问题,它们会以最好的方式解释它,并向您展示在使用它们时使用哪些方法。 (参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

委托只是一种从一个对象到下一个对象的消息传递方式。 这个问题之前也写过:How does a delegate work in objective-C?

基本上,委托是一种允许对象相互交互的方式,而无需 在它们之间建立强大的相互依赖关系,因为这使得 您的应用程序设计不太灵活。而不是对象 互相控制,他们可以有一个他们发送的代表(或 委托)消息,并且委托做他们所做的任何事情,在 为了响应此消息并采取行动,然后通常返回 一些东西回到另一个对象。

委托也是子类化的更好选择。代替你 必须创建自己的自定义类来稍微改变方式 其他对象的行为或传递数据,委托允许 对象发送消息给他们的代表为他们工作 无需创建子类以进行细微更改的开销 其他对象。

当然,委托的主要缺点是委托 可用的方法取决于 Apple 工程师的预测 有用以及他们期望人们使用哪些常见实现 需要,这对您可以实现的目标施加了限制。虽然, 正如 Quinn Taylor 指出的那样,这是 Cocoa 框架特有的 因此并不适用于所有情况。

如果委托是子类化的一个选项,那么就接受它,因为 这是一种更简洁的方式来管理您的代码和之间的交互 对象。

它也被写在了苹果文档中(参考:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html)

【讨论】:

【参考方案2】:

您可以通过编程方式添加导航控制器。

SomeRootViewController *rootViewController = [[SomeRootViewController alloc] initWithNibName:@"SomeRootViewControllernibName" bundle:nil];
UINavigationController *navCont = [[UINavigationController alloc] initWithRootViewController:rootViewController];

在此之后,您可以显示导航控制器的视图 (navCont.view)。例如,

currentViewController.view = navCont.view

对于委托,顾名思义,委托代表原始类处理一些操作。例如,如果您可以使用 UIApplication 委托,则 UIApplication 会将应用程序是否应该退出的决定推迟到应用程序委托。可以根据您的要求在运行时做出这些决定。代表使用协议进行编码。

【讨论】:

以上是关于UINavigation 控制器和委托[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UIAlertController 时调用 UINavigation 的 dismissViewControllerAnimated 方法

关闭模态 UINavigation 控制器

从 UIView 加载 UINavigation 控制器

IOS开发-UI学习-UINavigationController(导航控制器)的使用

为 segue 控制器设置 webview 委托?

设置 UINavigation 控制器和各种视图加载