正确的做法?重用相同的故事板视图和视图控制器

Posted

技术标签:

【中文标题】正确的做法?重用相同的故事板视图和视图控制器【英文标题】:Correct way of doing it? Reusing same storyboard view and view controller 【发布时间】:2016-09-22 15:50:21 【问题描述】:

我正在做如下。这个想法是根据菜单按钮提供的类型传递不同的值和显示数据。

但它没有按应有的方式工作。 它只是显示首先调用哪个视图(或者在第二个按钮按下时未刷新数据显示第一个视图)。 那么正确的做法是什么呢?

if (indexPath.row == 1) 
    SomeViewController* v = [self.storyboard instantiateViewControllerWithIdentifier:@"storyboardCat"];
    v.type=@"1";
    [self showViewController:v];
    [self.slidingViewController resetTopViewAnimated:YES];


if (indexPath.row == 2) 
    SomeViewController* v = [self.storyboard instantiateViewControllerWithIdentifier:@"storyboardCat"];
    v.type=@"2";
    [self showViewController:v];
    [self.slidingViewController resetTopViewAnimated:YES];

编辑 - 了解更多信息 SomeViewController.h 文件

@interface SomeViewController : UIViewController
@property (nonatomic, strong) NSString *type;
@end

SomeViewController.m 文件

@implementation SomeViewController
@synthesize type;
arrayData = [NSMutableArray arrayWithArray:[CoreDataController getSomeData:type]];

//so trying to populate different values in tableview based on passed parameter to function

但是现在哪个视图首先被调用或值被传递(1 或 2),只有那些值被填充并且值不会在同时调用传递另一个值时改变(例如,当索引行是 2 时)。

【问题讨论】:

您没有提供有关SomeViewController 的任何所需详细信息。 我已编辑问题以获取更多信息。 【参考方案1】:

试试这个

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; //Change Main if your storyboard name is different.
    SomeViewController* v = [storyboard instantiateViewControllerWithIdentifier:@"launchView"]; // launchView is the name given to the view controller in the properties as shown in below screenshot

希望对你有帮助

【讨论】:

不工作。我想我也在做同样的事情,但由于 tableview 在随后的调用中没有刷新(当一个接一个地立即完成时) 检查以确保在第一次重新加载完成后进行所有重新加载调用

以上是关于正确的做法?重用相同的故事板视图和视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Swift 故事板:拆分视图控制器在 MacOS 上未正确显示

在代码中混合故事板和约束

如何使用故事板中定义的单元格计算集合视图单元格高度?

希望在 iPhone 故事板应用程序中最大限度地重用

故事板中视图控制器之间的共享实例

uiview故事板中的viewcontroller多个