我有一个uiviewcontroller。 UIview顶部有2个按钮。
如果用户点击按钮,我想加载2个不同的UIViews(小视图;宽度= 320,高度= 200)。 我在每个小视图和一些控件中都有uitableview。这就是为什么我想用自己的uiviewcontrollers处理每个uiview。
我想我应该用CGRect创建Uiview并在按钮点击时调用小uiviewcontroller。但我不知道怎么做。感谢
如何使用自己的uiviewcontroller处理小型uiviews,我可以用IB设计小型uiviews吗?
答案 0 :(得分:1)
这绝对是可能的,Apple不推荐它,但对于像你这样的特殊情况,我同意,使用它。
我的方法:
使2个子视图表视图控制器没有xib文件,使用-awakeFromNib进行设置,而不是viewDidLoad,不会在它们上调用viewDidLoad。 (等到设置控制器以加载数据之前的下一步,在该步骤工作之前,您将无法进行调试)
现在使用xib(不是表视图)创建第三个控制器并打开xib。从库中将2个UITableViewControllers添加到窗口中,其中包含File的Owner,First Responder等,然后在检查器中转到最后一个选项卡 - 将其类更改为您制作的2个自定义表视图控制器。
接下来将2个表视图拖到主视图中,并在连接选项卡中,将委托和数据源绑定到一个控制器以获取一个表视图,然后重复另一个。此外,选择控制器,并将其视图插座连接到表视图。
接下来你应该使用xib进入主视图的控制器,然后像这样为表控制器创建出口:
@interface class : UIViewController {
UITableViewController *controller1;
UITableViewController *controller2;
}
@property(nonatomic, retain) IBOutlet UITableViewController *controller1;
@property(nonatomic, retain) IBOutlet UITableViewController *controller2;
使用该属性以保留它们非常重要,并且在viewDidUnload部分中,将它们取出以进行内存管理:self.controller1 = nil;
现在构建并继续,如果你设法完成所有这些,你应该有控制器的工作表视图,随时可以设置。
答案 1 :(得分:0)
使用Alex的解决方案来设置对表视图的引用(如您所述的小表)。将您的按钮添加到封闭的UIView中,并将代码放在按钮操作方法中,以根据按钮选择交换/交换正确的视图。
- (IBAction) buttonSwapViewPressed:(id) sender {
if (swapInView1) {
controller1.view.hidden = NO;
controller2.view.hidden = YES;
} else {
controller1.view.hidden = YES;
controller2.view.hidden = NO;
}
您的视图层次结构类似于:
UIView - Enclosing View
UIButton - Swap Button
UITableView - Table View 1
UITableView - Table View 2