相关疑难解决方法(0)

在故事板中,如何制作用于多个控制器的自定义单元?

我正在尝试在我正在使用的应用程序中使用故事板.在应用程序中有ListsUsers,每个都包含其他列表(列表成员,用户拥有的列表).所以,相应地,我有ListCellUserCell课.目标是让它们在整个应用程序中可重复使用(即,在我的任何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的流,并在视觉上而不是在代码中定义单元格布局.到目前为止,我无法看到如何获得这两者.

objective-c storyboard uitableview ios

216
推荐指数
6
解决办法
8万
查看次数

使用Interface Builder在没有故事板的情况下在nib中设计UICollectionView单元格

我正在尝试设计一个自定义UICollectionViewCell原型(在Xcode 5.0.2中),但是Interface Builder UICollectionView在设计一个笔尖时不允许我添加一个单元格.我可以设置项目(单元格)和Interface Builder创建的数量,如果我使用的是故事板,则可以完美地显示单元格,但是我无法在笔尖中将单元格添加到我的集合视图中.我试过了:

  • 将集合视图单元格从对象库手动拖放到集合视图中.(失败:不允许我将单元格放在我视图中的任何位置)
  • 使用storyboard中的单元格创建我的集合视图,并将整个视图复制粘贴到nib中.(失败:复制集合视图但单元格已消失)
  • 使用storyboard中的单元格创建我的集合视图,打开storyboard作为源代码,查找我的集合视图单元格,复制相关的XML,打开我的nib作为源代码,将其粘贴到XML集合视图中.(失败:无法打开在Interface Builder笔尖,它给了错误,当我删除源代码中的细胞,它再次打开不要.试试这个,如果你不知道自己在做什么.)

我也看到了几个关于同一问题的问题:

他们都指出以编程方式和/或使用另一个笔尖进行细胞处理.我知道怎么做,但有没有办法设计集合视图单元格,在一个nib中同一视图内的集合视图中,就像在故事板中一样?为什么Interface Builder不允许我在nib中执行它,它允许(甚至鼓励)完美地使用storyboard?

xcode interface-builder nib uicollectionview uicollectionviewcell

27
推荐指数
1
解决办法
1万
查看次数

故事板是否消除了对.nib的需求

随着storyboard的引入,当我创建UIViewController的子类时,我不会选择创建.xib/.nib,因为我可以在界面构建器中拖出一个viewcontroller并将其分配给新类.

因此,使用storyboard,何时需要使用.xib/.nib文件?

谢谢.

iphone xcode cocoa-touch uistoryboard

19
推荐指数
3
解决办法
8451
查看次数

dequeueReusableCellWithIdentifier不返回我的自定义类型的单元格

我正在使用带有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 storyboard uitableview ios5

5
推荐指数
1
解决办法
4180
查看次数