我正在尝试重用特定的视图。说这是一个有五个按钮的投票系统。由于它出现在不同的场景/屏幕中,我只想拥有一个视图并在需要时重用它。所以我在名为MyStarSystem.xib
的xib文件中创建视图。现在我想简单地将我的视图放到故事板视图控制器到故事板,而不是代码中。
如果一切顺利,我知道我应该能够通过将UIView拖入视图控制器然后将类设置为UIVotingView
来实现。但是我在哪里告诉UIVotingView
绘制xib的内容?当然,按钮必须是交互式的,所以我想拥有IBOutlets和IBActions。所以我在考虑使用-(void)drawRect:(CGRec)rect
,但作为一种解决方案毫无意义。有没有人知道如何创建这个视图并将其全部用到 - 通过将其放入故事板?
答案 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}}
希望这对您有所帮助!