在不使用代码的情况下将xib UIView添加到storyboard视图控制器

时间:2014-07-30 01:20:40

标签: ios xcode uiview storyboard xib

我正在尝试重用特定的视图。说这是一个有五个按钮的投票系统。由于它出现在不同的场景/屏幕中,我只想拥有一个视图并在需要时重用它。所以我在名为MyStarSystem.xib的xib文件中创建视图。现在我想简单地将我的视图放到故事板视图控制器到故事板,而不是代码中。

如果一切顺利,我知道我应该能够通过将UIView拖入视图控制器然后将类设置为UIVotingView来实现。但是我在哪里告诉UIVotingView绘制xib的内容?当然,按钮必须是交互式的,所以我想拥有IBOutlets和IBActions。所以我在考虑使用-(void)drawRect:(CGRec)rect,但作为一种解决方案毫无意义。有没有人知道如何创建这个视图并将其全部用到 - 通过将其放入故事板?

2 个答案:

答案 0 :(得分:1)

我认为您可以通过在故事板中创建基本视图控制器并连接其IBActions和插座来实现您的目标。然后,您可以在故事板中复制并粘贴此控制器 - 根据您的操作方式,副本可能会直接显示在旧的控制器上,因此您需要移动它以查看两者。根据需要创建尽可能多的这些子类,并为它们创建所有都继承自基本视图控制器的子类。他们应该都可以访问您在基本控制器中创建的插座和操作(插座需要位于.h文件中,而不是.m中的类扩展)。然后,您可以在子类中添加任何特定代码,并在故事板中添加任何额外视图以自定义它们。

答案 1 :(得分:-2)

要重复使用从一个控制器到另一个控制器的所有信息,您可以通过多种方式进行编码,但从不编码是不可能从xib调用Storyboard,但很容易让我解释一下:

1)要重复使用您的信息类,请按以下步骤操作:

- 为your.xib打开class.h,在第一行使用:

    #import <UIKit/UIKit.h>
    //here you have to import your voting view so:
    #import "VotingView.h"

    @interface ViewController : UIViewController {

}

@end

- 现在您必须将投票视图中的所有功能导入到xib视图中以重复使用它们:

    #import <UIKit/UIKit.h>
    #import "VotingView.h"

    //change you UIViewController in to your VotingView like this 

    @interface ViewController : VotingView {

    }

@end
  • 好了,现在您可以从ViewController.m调用VotingView中的所有功能,例如,如果您的VotingView中的- (void)voting {}现在位于ViewDidLoad下的[self voting];只写- (IBAction)callXib:(id)sender{ ViewController *viewController=[[ViewController alloc]initWithNibName:@"MyStarSystem" bundle:nil]; [self presentViewController:viewController animated:YES completion:nil]; }

现在好了如何从Storyboard调用XIB:

进入故事板中的ViewController并在界面中添加一个Button,使用IBAction调用xib:

- (IBAction)backTo:(id)sender{

[self dismissViewControllerAnimated:YES completion:nil];

}

现在要解除从xib到故事板的回复创建其他按钮并使用此功能:

{{1}}

希望这对您有所帮助!