2012-04-09 79 views
0

我对iPhone开发相当陌生,所以请原谅我,如果这已被问到。在UIScrollView中使用我自己的UIView

我刚开始玩UIScrollView。我希望它的工作原理与UITableView基本相同,但具有更多定制的“单元”,我已经实现了这一点,它运行良好,但我只是想澄清一下。

最初,当我设计这些“单元格”时,我在Xcode中创建了一个UIView,它给了我一个视图的nib文件,但这并不能帮助我处理参考插口和动作处理程序。

然后,我创建了一个UIViewController但我发现自己只是增加从UIViewController视图到UIScrollView - [scrollView addSubview:myViewController.view] - 这感觉不对,因为它打破了“每个屏幕都有一个UIViewController”的范例。

然后,我去创建一个UIView子类,在初始化方法中,我将控件添加到我的视图(一些标签和图像),根据我如何在笔尖中设计它们来定位它们。

这最后的方法效果几乎一样我想它,但它不觉得我不能直观地设计细胞,并利用笔尖文件的权利。

我怎样才能拥有自己定制的UIView(不是UIViewController)类,它可以在UIScrollView中使用可视化的笔尖。

如果我遥远的使用UIScrollView的请让我知道去哪里找。

谢谢。

+1

定制“UITableView”中的单元格的可能性仅受限于您的想象。你不需要使用笔尖,你可以用代码设计自己的单元格。 [这本书](http://www.amazon。com/Robert-Napier/e/B005KRBPQ6)[这个人](http://stackoverflow.com/users/97337/rob-napier)有一个关于获得'UITableView'的权利,我强烈推荐它。 – dasblinkenlight 2012-04-09 13:37:11

+0

我不想在代码中设计单元格,我想在nibs中设计它们。但我能找到使用它们的唯一方法是将笔尖与UIViewController关联起来。 – Brendan 2012-04-09 13:38:48

+0

corect我如果我错了...你是否想创建自定义单元格在表视图.... ??? – WaaleedKhan 2012-04-09 13:56:38

回答

0

您可以使用笔尖,使自己的UIViews -

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; 

UIView *mySpecialView = [nibContents objectAtIndex:0]; 

[self addSubview:mySpecialView]; 

我用这个负载 - 这当然没有必要去制造一个UIViewController每个查看您需要添加的极致!

+0

如果我在界面生成器中设置UIView的自定义类,我可以投mySpecialView为MyViewClass而不是UIView? – Brendan 2012-04-11 16:15:13

+0

是的没问题... – SomaMan 2012-04-14 06:28:51

+0

好的我已经这样做了,但是我知道我需要在XIB中将XIB中的视图连接到源代码中的视图中。在目前我得到这个类不是关键图像的关键值编码 - “当我尝试从笔尖加载视图时发生错误。建议? – Brendan 2012-04-14 14:09:15

0

我想你想在这里使用的方法是真的结束了这个问题复杂化。一个UITableView实际上包含一个UIScrollView(尽管你不能访问它),所以它默认已经做了你想要达到的目的。另外你为什么认为每个视图应该只有一个视图控制器?在实践中,有尽可能多的视图控制器,以使您的应用程序的工作和组织。

我的建议是你使用一个UITableView和自定义的UITableViewCell。您可以轻松地在单个笔尖中设计单元格,只需删除新的.xib附带的默认视图,然后将UITableViewCell拖动到其位置即可。这确实意味着你需要一个ViewController用于你的自定义UITableViewCell,但是控制器不需要做任何事情,除非设置了单元格的文本。您也可以轻松地重复使用单元格作为内存用途(虽然您可以重用普通视图,但不像内存单元格那么友好) - 因为Apple设计的单元格专门用于重复使用。)

您是否需要我发布任何代码以帮助自定义细胞?让我知道如果你愿意的话,明天再看看。

希望这有助于你的项目,吉祥如意。