如何为不同的xib添加公共视图?

时间:2011-08-26 12:36:17

标签: iphone ipad

我是iPhone / iPad编程的新手。我的问题是,如何向两个或多个视图(或xib文件)添加公共视图。比方说,例如,我计划添加一个公共菜单,以显示在不同的xib上。目前我添加相同的元素(按钮)到所有的xibs。有什么方便吗?

2 个答案:

答案 0 :(得分:0)

MainWindow.xib文件中查看您的公共视图,并在AppDelegate文件中获取其IBOutlet和属性。

正确连接你的IBOutlet以及何时在其他视图控制器中使用它你应该创建你的appDelegate实例,然后将你的公共视图添加到你的viewcontroller并设置它的框架。

例如......

[appDelegate.indicatorView setFrame:CGRectMake(107, 213, 106, 81)];
[self.view addSubview:appDelegate.indicatorView];

appDelegate是您的实例对象,通过创建您的视图属性,您可以访问它。 indicatorView是MainWindow.xib文件中的常见视图..

答案 1 :(得分:0)

为什么你没有使用标签栏控制器?

用户标签栏控制器和隐藏标签栏并添加自定义菜单项(按钮)。请参阅下面的代码并尝试使用。

- (void) hideTabBar
{
     for(UIView *view in tabController.view.subviews)
     {
         if([view isKindOfClass:[UITabBar class]])
         {
            view.hidden = YES;
            break;
         }
     }
}

- (void) addCustomTabs
{
     totalTabs = 5;
     CGRect rect = CGRectMake(0.0, 0.0, 64.0, 49.0);

     tabScroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 460.0-rect.size.height, 320.0, rect.size.height)];
     tabScroller.backgroundColor = [UIColor clearColor];
     tabScroller.showsHorizontalScrollIndicator = NO;
     [tabController.view addSubview:tabScroller];

     float x = 0.0;
     for (int i = 0; i < totalTabs; i++) {
          customTabs[i] = [UIButton buttonWithType:UIButtonTypeRoundedRect];
          customTabs[i].frame = CGRectMake(x, 0.0, rect.size.width, rect.size.height);
          customTabs[i].tag = i;
          [customTabs[i] addTarget:self action:@selector(selectTab:) forControlEvents:UIControlEventTouchUpInside];
          [customTabs[i] setTitle:[NSString stringWithFormat:@"%d",i+1] forState:UIControlStateNormal];
          [tabScroller addSubview:customTabs[i]];
          x += rect.size.width;
      }

      tabScroller.contentSize = CGSizeMake(x, rect.size.height);
}

- (void) selectTab:(id)sender
{
      int tabID = [sender tag];

      for (int i = 0; i < totalTabs; i++) {
         customTabs[i].selected = NO;
      }

      customTabs[tabID].selected = YES;
      tabController.selectedIndex = tabID;

}