2016-12-17 31 views
0

我是一个快速的新手。我正在尝试构建动态对象。在我的例子中,我试图从我的BOOK类创建一个PAGE类的实例。我想我不知道如何动态创建它们/命名它们或引用它们以备后用。我知道我不能创建动态名称......我猜我把它们放到了棕褐色数组中?任何帮助或输入赞赏。在Swift 3中创建动态对象

//page class 
class pageview : UIView { 

    var page: UIView! 

    init() { 

     super.init(frame: CGRect(x: 0, y: 0, width: bookwidth, height: bookheight)) 

     page = UIView(frame: CGRect(x: bookposx, y: bookposy, width: bookwidth, height: bookheight)) 
     page.backgroundColor = UIColor.blue 
     book.addSubview(page) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 


//book class 
class bookview : UIView { 

    var cover: UIView! 
    var backcover: UIView! 
    var page: UIImageView! 

    init (numberofpages: Int) { 

     super.init(frame: CGRect(x: 0, y: 0, width: bookwidth, height: bookheight)) 

     //pages 
     for i in 0 ..< numberofpages { 

      //PROBLEM HERE 
      let page (i) = pageview() 
      self.addSubview(page (i)) 

     } 


    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

} 


//add book 
let book = bookview(numberofpages: 3) 
container.addSubview(book) 

回答

0

我不知道我是否正确地解决了您的问题。但检查了这一点:

class bookview : UIView { 
var cover: UIView! 
var backcover: UIView! 
var pages: [pageview] = [] 

init (numberofpages: Int) { 
    super.init(frame: CGRect(x: 0, y: 0, width: 400, height: 400)) 

    //pages 
    for _ in 0 ..< numberofpages { 
     let page = pageview() 
     pages.append(page) 
     self.addSubview(page) 
    } 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} } 
+0

尽管此代码可以回答这个问题,提供有关附加的上下文*为什么*和/或*如何*这个代码回答了这个问题提高了其长期价值。 http://stackoverflow.com/help/how-to-answer – jtbandes