PageMenu 如何动态(以编程方式)添加视图控制器?

Posted

技术标签:

【中文标题】PageMenu 如何动态(以编程方式)添加视图控制器?【英文标题】:PageMenu how to add view controllers dynamically (programmatically)? 【发布时间】:2016-11-15 16:47:16 【问题描述】:

我希望我的应用如下图所示。

我正在使用PageMenu 来完成这个结果。数据是从 Web API 获取的。我想根据 Web API 响应的天数动态创建视图控制器,以便每天都可以有一个视图控制器,以便它可以显示当天的时间表。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

阅读您自己提供的链接:

// Array to keep track of controllers in page menu
var controllerArray : [UIViewController] = []

// Create variables for all view controllers you want to put in the 
// page menu, initialize them, and add each to the controller array. 
// (Can be any UIViewController subclass)
// Make sure the title property of all view controllers is set
// Example:
var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: nil)
controller.title = "SAMPLE TITLE"
controllerArray.append(controller)

所以你要做的是:有一个返回[dailyModel]的函数。 您的 dailyModel 看起来像这样:

struct dailyModel 
let programStartingTime : String // 6:45
let item : [item] // [(Maghrib & Isha Prayer, 20, 0),(Ziarat-e-Ashura, 20, 1), ...otherItems...]


struct item
let duration : Int? //minutes
let name : String // Maghrib and Isha prayers
let row : Int? //  0

然后循环遍历 dailyModel 并使用它的参数实例化 & populate viewcontroller,然后 append 每个作为教程正在做。

这不是最好的代码,但我希望你能明白。

【讨论】:

@AliMir 或者您的项目可能有 实际时间6:15 PM (而不是持续时间和行)然后排序(使用某些东西像this answer) 你的items 基于时间并列出它们。我以前没有处理过日期,但我假设 webAPI 以字符串格式返回,你以后必须将其转换为 NSDates,然后如果它是字典格式,如果你的 JSON 在数组格式,那么您无需担心,您可以循环并打印项目的时间和名称...【参考方案2】:

只需创建一个循环多次添加相同的控制器。我创建了addPageMenu 函数。收到响应后调用它。

func addPageMenu(count: Int) 

 var controllerArray : [UIViewController] = []

  for i in count 

  var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: nil)
  if i == 0 
  controller.title = "SUNDAY"
   else if i == 1 
   controller.title = "MONDAY"
  ...

  controllerArray.append(controller)

 

  let pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)

// Lastly add page menu as subview of base view controller view
// or use pageMenu controller in you view hierachy as desired
  self.view.addSubview(pageMenu!.view)
 

【讨论】:

以上是关于PageMenu 如何动态(以编程方式)添加视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将视图添加到表视图中的单元格

如何以编程方式动态创建所有 Android ui 组件的列表?例如文本视图、图像视图等

如何以编程方式为其父视图添加视图大小?

如何以编程方式使用自动布局添加自定义视图

如何以编程方式添加和保留文本视图?

如何以编程方式在 UITableView 中添加视图?