UINavigation控制器和代表

时间:2011-11-28 06:50:31

标签: objective-c xcode uinavigationcontroller uinavigationbar uiapplicationdelegate

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

导航控制器:我已经看过大约10个导航控制器的例子,但我无法理解它,我看到代表们声明并显示将包含的主屏幕,包含在XIB文件。

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

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

我必须在不影响我的屏幕的情况下申报所有内容?啊,我很想念这个控件(UINavigationController)。是服务,但不是按照我的意愿在屏幕上消费,而不是在整个应用程序中消费。

代表是什么?:我使用的很少,而且我经常使用它,因为我看到了对其他示例的引用,并且通常尽量不使用它因为不知道如何使用它

如果我能解释非技术性的方式,而不是更容易理解,那就是所有的代表。 它是什么?

如何使用?

我知道在哪里使用它吗?

我知道何时应该使用它。

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

很抱歉给您带来不便,这是因为它让我感到困惑,因为导航控制器和那里我留下了几个问题,如果我转向你,是因为我跑出去并获得更多资源来调查和分析示例,但我无法理解爱好。

2 个答案:

答案 0 :(得分: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工程师预见的内容   是有用的,他们期望人们有什么共同的实现   需要,这限制了你可以实现的目标。虽然,   正如奎因泰勒指出的那样,这是针对Cocoa框架的   因此并不适用于所有情况。

     

如果委托是子类化的选项,那么接受它,因为   它是管理代码和交互之间更清晰的方式   对象。

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

答案 1 :(得分:1)

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

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

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

currentViewController.view = navCont.view

至于代表,正如意思所暗示的那样,代表们代表原始班级处理一些行动。例如,如果您可以使用UIApplication委托,则UIApplication会决定应用程序是否应退出应用程序委托。这些决定可以根据您的要求在运行时进行。代表使用协议进行编码。