我有一个带有自定义部分标题的表视图。节标题的视图在情节提要中定义,并连接到一个实例变量。有没有办法从故事板中请求一个新的视图实例?
在过去,我通过在自己的xib文件中定义节头并使用以下命令获得一个新实例来做到这一点
[[NSBundle mainBundle] loadNibNamed:@"TimerViewSectionHeader" owner:self options:nil];
UIView *newHeaderView = self.sectionHeaderView;发布于 2011-12-19 09:32:22
我认为没有办法做到这一点。最好的方法是将表视图自定义标题视图放在一个单独的nib中,并在需要使用它时像在代码示例中那样加载它。
发布于 2011-12-21 21:56:59
我试着做同样的事情,但遇到了同样的问题。
我很喜欢使用故事板,这给我留下了深刻的印象,我可以如此快地创建一个工作的UI。但是,一旦您需要重用视图,将这些视图和它的UIViewController子类放在一个单独的nib中是很有意义的。
然后,您可以在重用视图应该放置的所有位置放置一个通用UIView,并使用ViewController添加该视图:
[myReusableViewController loadView];
[myReusableViewController viewDidLoad]; // You have to handle view callbacks yourself.
[self.myReusableViewPlaceholder addSubview:myResusableViewController.view];
[myReusableViewController viewWillAppear:YES];所以总结一下:
UIViewController子类中创建可重用的视图,并在序列图像板中添加UIView占位符。在另一个答案中,我想到了一些Pros and Cons of Storyboard
发布于 2012-04-19 06:20:29
我为此提出的解决方案如下:
我有一个包含多个原型单元的表视图,可以显示复杂的数据。有到详细信息视图和事务处理视图的分段。
第一个表视图有一个搜索按钮,该按钮显示一个带有结果的新表视图。它需要与推送它的主表视图相同的功能;包括到详细视图和事务进度视图的segues,因此:
在情节提要上,选择并复制主表视图。取消选择并粘贴。创建一个从主表视图到第二个表视图的推送段;或者从你想要导航到它的位置。根据需要修改第二个表视图。IE:如果它需要一些UI更改,没问题。
创建一个新的视图控制器类,它是运行主表视图的视图控制器的子类。
重写子类中的数据委托,以提供所需的数据子集。
回到情节提要,选择您的第二个tableview控制器,然后在标识检查器中选择您的子类作为自定义类。
要使此解决方案顺利运行,您的应用程序确实需要管理视图的数据。您可以使用prepareforsegue将数据从第一个表视图传递到第二个表视图,但我发现从多个角度来看,应用程序数据模型要灵活得多。
除非您有通过segue推送到子视图的按钮,否则您的子类将需要覆盖通过带有标识的segues推送的函数。NB Segues必须有唯一的标识符,如果你对它们进行id的话。
它花了大量的试验和错误来弄清楚这一点,但是一旦你理解了这个概念,它就是一个相对顺利的解决方案,它具有很强的适应性,实现起来也不是那么糟糕。
https://stackoverflow.com/questions/8555805
复制相似问题