2016-07-05 89 views
0

在我的iOS应用程序中,选项卡的数量不会被修复。这将决定运行时间。假设有4个选项卡需要显示,那么我将不得不创建4个相同运行时间的实例(在4个不同的导航控制器内部)。创建UIViewController的多个实例

下面是我们做访问某个特定的视图控制器:

id controller1 = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[controller1 setTitle:@"Football"]; 
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:controller1]; 
[arrControllers insertObject:nav1 atIndex:0]; 

我想要做的是有有相同的看法控制器的实例导航控制器的4实例。所有4个视图控制器将具有相同的功能来执行(一个会显示足球的视频,一个会显示篮球视频..)意思是,在故事板中,MyViewController是一个视图控制器,但需要创建不同的实例MyViewController

我该怎么做?我必须这样做的唯一原因是,tabbar的选项卡不会被固定,而是那些动态的。

请分享任何有用的..

+1

你需要MyViewController的不同实例,所以叫instantiateViewControllerWithIdentifier四次,我认为,我可能不清楚你的问题。 –

+0

我的视图控制器在故事板中是单一的,它将在选项卡中显示为不同的控制器。根据服务器的响应可能是5。 – NSPratik

+0

我怀疑这是支持。 'UIViewController'有一个'navigationController'属性,用于返回一个导航控制器。 –

回答

1

视图控制器可以通过一次只有一个其他视图控制器包含。即使情况并非如此,我怀疑你会希望跨标签的实例是同一个实例,因为每当用户更改标签时都会改变它的状态。

比较简单的设置是从服务器响应创建独特的根独特的导航VCS数据,如...

// you've figured out here that you need four tabs, based on 
// a response from the server like... 
NSArray *tabNames = @[ @"one", @"two", @"three" @"four"]; // from the server 
NSArray *tabs = [@[] mutableCopy]; 
for (NSString *tabName in tabNames) { 
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
    vc.title = tabName; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; 
    [tabs addObject:nav]; 
} 
// here, tabs is an array of view controllers that can 
// be assigned to the tabBar viewControllers property 
+0

谢谢@danh,让我试试.. – NSPratik

+0

它对我有帮助。我打算这样做。公认.. – NSPratik