1

该应用程序是基于视图的项目类型。我在 View XIB(UIView Nib)中使用 NSObject,假设该对象是应用程序的顶部栏。

MainController UIViewController 加载初始屏幕。它看起来像这样,

UIViewController MainViewController 图片

我想加载一个顶视图(新的,称之为 X)在上图中的顶部视图(红色)中单独设计。

现在,我有 NSObject,它驻留在“X”内并绑定所有事件并完全控制 X,它是一个单例对象。

在 NSObject 类中,我有一个方法可以返回 self 对象实例和它控制的 uiview("X") 实例。

方法是,

-(UIView*)ReturnTopBarView
{
            NSLog(@"called 2");
    return topBarObject.topBarView;
}

//Provides the top bar instance to all the view controllers.
//Singleton Implementation.
+ (id)GetTopBarObject
{
    if(topBarObject == nil)
    {
        NSLog(@"called 1");
        return [[TopBarObject alloc] init];
    }
    return topBarObject;    
}

topbarview 是完全设计的 topbarview("X"),它必须出现在主视图控制器的 topbarview(上图中的红色段)中。

我在主视图控制器中编写了一个方法:

-(void)SetHomeScreen
{
    self.topView = [[TopBarObject GetTopBarObject] ReturnTopBarView];
}

-(void)SetHomeScreen我在我的 appdelegate.applicationdidfinishlaunching 中调用[viewcontroller SetHomeScreen]

这实际上调用了 NSObject(TopBarObject 类)中的相应方法,但我没有看到在(mainviewcontroller.topbarview)中更新了视图。这是现在的主要问题。

我有一个带有图像和图标的自定义顶栏和自定义底栏。所以我选择了这种设计方式。我不确定这是否是最好的方法,我只是在寻找一个最佳的系统设计来使这项工作高效。如果您认为还有其他方法比这要好得多,请与我分享。

4

2 回答 2

0

我看到单例是不正确的。它应该是这样的:

+ (id)GetTopBarObject {
    if(topBarObject == nil) {
        topBarObject = [[TopBarObject alloc] init];
    }
    return topBarObject;
}

在您的代码中,topBarObject 永远不会启动,因此每次调用 GetTopBarObject 时,它都会生成一个新的 TopBarObject 并返回它......

于 2010-01-25T00:26:26.310 回答
0

appdelegate.applicationdidfinishlaunching 在哪里被调用?
如果您在实际设置视图之前调用,您所做的就是用一些东西设置 nil 。 之前
试试 viewcontroller.view;[viewcontroller SetHomeScreen]

于 2010-01-25T01:49:56.363 回答