繁体   English   中英

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

[英]add xib UIView to storyboard view controller without using code

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

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

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

要重用从一个控制器到另一个控制器的所有信息,你有很多方法,但从来没有编码是不可能从一个Storyboard调用一个xib ,但是很容易让我解释一下:

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
  • 好吧,现在你可以从VotingView调用ViewController.m所有函数,例如,如果你的VotingView中有一个- (void)voting {} vote - (void)voting {}现在你的ViewController.m中的ViewDidLoad你只写了[self voting];

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

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

- (IBAction)callXib:(id)sender{

ViewController *viewController=[[ViewController alloc]initWithNibName:@"MyStarSystem" bundle:nil];

[self presentViewController:viewController animated:YES completion:nil]; 

}

现在要解除从xib到故事板的后退创建其他Button并使用此功能:

- (IBAction)backTo:(id)sender{

[self dismissViewControllerAnimated:YES completion:nil];

}

希望这对你有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM