我正在尝试在我正在使用的应用程序中使用故事板.在应用程序中有Lists和Users,每个都包含其他列表(列表成员,用户拥有的列表).所以,相应地,我有ListCell和UserCell课.目标是让它们在整个应用程序中可重复使用(即,在我的任何tableview控制器中).
这就是我遇到问题的地方.
如何在故事板中创建可在任何视图控制器中重复使用的自定义tableview单元格?
以下是我迄今为止尝试过的具体内容.
在Controller#1中,添加了一个原型单元格,将类设置为我的UITableViewCell子类,设置重用ID,添加标签并将它们连接到类的出口.在Controller#2中,添加了一个空的原型单元格,将其设置为同一个类并重复使用id.当它运行时,当控制器#2中显示单元格时,标签永远不会出现.在Controller#1中正常工作.
在不同的NIB中设计每种细胞类型,并连接到适当的细胞类.在storyboard中,添加了一个空的原型单元格并设置其类并重用id来引用我的单元类.在控制器的viewDidLoad方法中,为重用ID注册了那些NIB文件.如图所示,两个控制器中的单元格都像原型一样空.
将两个控制器中的原型保持为空并设置类并将id重用于我的单元类.完全用代码构建单元格的UI.细胞在所有控制器中都能完美运
在第二种情况下,我怀疑原型总是覆盖NIB,如果我杀死原型单元,注册我的NIB用于重用ID将起作用.但后来我无法设置从单元格到其他框架的segue,这实际上是使用故事板的全部要点.
在一天结束时,我想要两件事:在故事板中连接基于tableview的流,并在视觉上而不是在代码中定义单元格布局.到目前为止,我无法看到如何获得这两者.
我正在尝试设计一个自定义UICollectionViewCell原型(在Xcode 5.0.2中),但是Interface Builder UICollectionView在设计一个笔尖时不允许我添加一个单元格.我可以设置项目(单元格)和Interface Builder创建的数量,如果我使用的是故事板,则可以完美地显示单元格,但是我无法在笔尖中将单元格添加到我的集合视图中.我试过了:
我也看到了几个关于同一问题的问题:
他们都指出以编程方式和/或使用另一个笔尖进行细胞处理.我知道怎么做,但有没有办法设计集合视图单元格,在一个nib中同一视图内的集合视图中,就像在故事板中一样?为什么Interface Builder不允许我在nib中执行它,它允许(甚至鼓励)完美地使用storyboard?
xcode interface-builder nib uicollectionview uicollectionviewcell
随着storyboard的引入,当我创建UIViewController的子类时,我不会选择创建.xib/.nib,因为我可以在界面构建器中拖出一个viewcontroller并将其分配给新类.
因此,使用storyboard,何时需要使用.xib/.nib文件?
谢谢.
我正在使用带有UITableViewController和UITableViewCell子类的ios5故事板.我不想在视图的storyboard设计器中设计单元格的可视元素,因为我想使用UITableViewCell的可重用子类(特别是TDBadgedCell).
我在storyboard设计器中设置了我的单元标识符,只要我没有设置TDBadgedCell独有的任何属性,所有行都在UITableView中正确加载.如果我设置了badgeStringTDBadgedCell唯一的属性,我会得到一个例外.我缩小了dequeueReusableCellWithIdentifier:没有返回TDBadgedCell类型的单元格.
我只是用UITableViewController来运行它.我有一个UIViewController与嵌入式UITableView以相同的方式设置,这不是一个问题.有任何想法吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
static NSString *CellIdentifier = @"PhoneNumberCell";
TDBadgedCell *cell = (TDBadgedCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[TDBadgedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if ([cell isKindOfClass:[TDBadgedCell class]])
{
NSLog(@"It is TDBadgedCell");
}
else
NSLog(@"It is NOT TDBadgedCell");
Run Code Online (Sandbox Code Playgroud) iphone ×2
storyboard ×2
uitableview ×2
xcode ×2
cocoa-touch ×1
ios ×1
ios5 ×1
nib ×1
objective-c ×1
uistoryboard ×1