客户端希望我初始化模型对象,但我面临的问题是我需要的属性位于五个视图控制器之间。在视图控制器1中,我为我的对象定义了propertyA。视图控制器2我定义了propertyB,依此类推。在最后的视图中,我看到了我所选择的内容的摘要,从那里我可以最终创建我的对象。
我正在做这个令人难以置信的长时间和低效率,此时我在许多视图中为每个属性提供相同的可选变量。任何帮助都会很棒。
答案 0 :(得分:0)
对于这种情况,您应该尝试使用Singleton模式
创建具有所有属性的类并创建其单例:
using (MemoryStream workStream = new MemoryStream())
{
using (Document document = new Document())
{
using (PdfWriter writer = PdfWriter.GetInstance(document, workStream))
{
HeaderFooter headerfooter = new HeaderFooter();
headerfooter.watermarkpage = WaterMarkPage;
headerfooter.includefooter = IncludeFooter;
writer.PageEvent = headerfooter;
writer.CloseStream = false;
document.Open();
PdfContentByte cb = writer.DirectContent;
foreach (TestResult testresultdata in testresults)
{
document.Add(PopulateData(testresultdata, reporttitle, includesponsordata));
// Move to next page
document.NewPage();
} // end foreach Order
document.Close();
} // end writer
} // end document
}
要设置不同-2视图控制器中的值,请遵循以下模式。这里我假设您可以在视图控制器中的任何位置设置属性。现在我正在考虑public class Property {
public var propertyA:AnyObject? /// define your appropriate data type
public var propertyB:AnyObject?
public var propertyC:AnyObject?
public var propertyD:AnyObject?
public var propertyE:AnyObject?
static let sharedInstance = Property()
}
您可以将值更改为视图控制器的任何部分
viewDidLoad
等
最后,您将获得所有已分配参数的值
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Property.sharedInstance.propertyA = "X" as AnyObject //// Value should be of same data type of propertyA
}
}
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Property.sharedInstance.propertyB = "Y" as AnyObject //// Value should be of same data type of propertyA
}
}