Storyboard中的组件重用

时间:2013-12-13 10:39:38

标签: ios xcode cocoa-touch xcode-storyboard

我是iOS开发的新手,具有几年的Android经验。我直接开始使用XCode 5和Storyboard范例。我喜欢用草图绘制应用程序流的视觉方法,但恕我直言,它并没有真正强制组件重用,或者我可能不知道如何去做。

我有一个实际问题,如下所示:我有一种情况,其中点击一个TableView单元格强制推送到另一个看起来相同且行为相同的TableView办法。我希望在整个应用程序中重用两种特定类型的TableViewCell,因此我不能多次复制第一个TableViewController。我需要在一种类型的TableViewCell中进行更改,以便在任何地方受到影响,对于Tableview的外观和行为也是如此。有点像重复使用组件,你得到我希望的图片。

我尝试在单独的xib文件中创建自定义TableView和TableViewCell,将其连接到自定义控制器类。然而,当我想在故事板中重用那个控制器类时,我无法从单元格到下一个单元格,因为只显示视图控制器,但内部没有视图。

也许,我做错了。也许,我应该制作一个单一的控制器,如果可能的话,强迫它自己设置,不知道。

你会做什么?

3 个答案:

答案 0 :(得分:0)

你可以从被选中的人那里做程序性的猜测......

#import“someVC.h”

然后当你想要寻找新的VC

// Create a VC and remember to set the Storyboard ID of someVC (example someVCID)
someVC *newView = [self.storyboard instantiateViewControllerWithIdentifier:@"someVCID"];

// Can't remember how this works but you can change the Transition method
// newView.modalTransitionStyle = UIModalTransition;

// If you want to pass data, setup someArray in the someVC .h with @property (nonatomic, strong) NSArray *someArray;
newView.someArray = MyLocalArray;

// Animated or not
[self presentViewController:newView animated:NO completion:nil];

答案 1 :(得分:0)

如果您要执行的操作是在同一UITableView上执行segue,则可以this answer

检查Rob

我会报告它包含的完整性:

  

如果你正在使用动态细胞原型,你显然可以做一个segue   从表格视图单元格到控制器没有任何问题。

     

make segue from cell to controller

     

当你制作segue时,你最终得到:

     

circular segue

     

但让我们想象一下,有一些原因没有   为你工作,例如你不能从细胞中获得一个segue(for   例如,您需要从didSelectRowAtIndexPath调用segue,而不是   在选择细胞时)。在这种情况下,您无法使用之前的那个   技术

     

在这种情况下有几种选择:

     
      
  1. 作为pointed out by Chris,如果仅支持iOS 6及更高版本,请使用上述技术,但(a)确保您的   didSelectRowAtIndexPathself使用sender,然后使用shouldPerformSegueWithIdentifier   sender == self sender只允许segue didSelectRowAtIndexPath(因此当performSegueWithIdentifier是表格视图单元格时,它将被取消);

  2.   
  3. 也许更容易,只是不要定义一个segue并手动拥有{{1}}   instantiateViewControllerWithIdentifier然后推/出   那视图控制器;或

  4.   
  5. 您可以使用以下方法,kludgy解决方法:简而言之,向视图控制器添加一个按钮(将其拖动到   底部),它不会出现在视图上,但你可以使用它   塞格斯。首先,将圆角按钮拖动到控制器的栏上   场景的底部:

         

    drag button

         

    现在,您可以从该按钮向视图控制器创建一个segue:

         

    make segue from hidden button

         

    因此,你最终再次得到了自我引用的信息:

         

    final button segue

         

    您必须为该segue指定一个标识符,以便您可以调用它   以编程方式通过{{1}},但它的工作原理。不   最优雅的解决方案,但我认为它比拥有更好   故事板上的额外场景。

  6.         

    这些都不是理想的,但你有很多选择。

答案 2 :(得分:0)

好吧..在iOs中以不同的方式思考它,如果我是你,我会创建多个ViewController,即使它们几乎相同,并创建一个自定义单元类,并使这个单元格进行配置块。 现在,对于每个ViewController((或TableViewController)),您可以重复使用相同的自定义UITableViewCell,并将其传递给每个案例略有不同,而且您还可以创建{{1将具有常规配置,并在每个BaseTableViewController中传递您需要的自定义更改。

考虑一下,当你查看你的故事板时,你将能够看到你的所有工作流程,当出现问题时你将能够进行调试,如果你要使用你的建议,调试将是我想象中真正的痛苦。

无论如何,试试看,如果你需要进一步澄清,可以询问更多。