如何制作自定义标题视图?

时间:2014-12-11 05:35:04

标签: ios objective-c iphone

我开始了一个带有故事板的项目,它有很多视图,每个视图都有相同的标题(带有图像,公司名称和两个按钮)。我想在主视图中执行一次,并使其可以重用于其他视图。

4 个答案:

答案 0 :(得分:1)

您可以使用标题创建包含视图控制器。然后,将当前的根视图控制器(故事板中的当前初始视图控制器)添加到包含该视图控制器。

答案 1 :(得分:1)

使用XIB创建名为HeaderView的自定义视图:

在HeaderView.h中,您必须定义协议以及与要在标题中显示的控件相关的属性。

@protocol HeaderViewDelegate <NSObject>
- (void)onBackButtonTapped;
@end

@interface HeaderView : UIView

@property (nonatomic, strong) IBOutlet UIImageView *headerImageView;
@property (nonatomic, weak) id <HeaderViewDelegate> delegate;

-(IBAction)backButtonTapped:(id)sender;

@end

在Header.m中:

@implementation HeaderView

-(IBAction)backButtonTapped:(id)sender
{
    if (delegate != nil && [delegate respondToSelector:@selector(onBackButtonTapped)])
    {
        [delegate onBackButtonTapped];
    }
}

@end

现在你需要做的是创建一个BaseViewController,并且应该从这个控制器扩展每个控制器,以便在所有视图中显示相同的标题。

请告诉我您对此实施有任何疑问。

答案 2 :(得分:0)

我已设法根据此post创建可重复使用的视图。

  • 创建一个名为SharedView的类,它扩展了UIView
  • 创建一个名称相同的笔尖
  • 将nib中的“文件所有者”属性设置为SharedView类
  • 从您的视图创建一个出口到SharedView类,并将其命名为'contentView'
  • 将initWithCoder替换为以下内容:

    -(void)awakeFromNib {
        //Note that you must change @”BNYSharedView’ with whatever your nib is named
        [[NSBundle mainBundle] loadNibNamed:@"BNYSharedView" owner:self options:nil];
        [self addSubview: self.contentView];
    }
    
  • 在ViewControllers中创建视图,并将其类设置为SharedView

另一个解决方案是使用Container View Controller,至于您的具体情况,我尝试为您实施demo,请尝试一下!

希望它可以提供帮助!

答案 3 :(得分:0)

为什么不使用NavigationController作为rootviewControoler with leftBarbutton和rightbarButton 这样它就可以在你的整个应用程序中