我正在创建一个使用视觉上类似于iOS原生电子邮件应用的邮件屏幕。它看起来像这样(两个图像都是同一个屏幕。第一个是上半部分,第二个是其余部分)。
不同之处在于,除了正常的到,抄送, Subjet 字段外,我的邮件屏幕还有更多自定义字段。
我正在使用UITableViewController
来创建它。下面是一个代码片段,它创建一个单元格(对于每个单元格它几乎相同)。
- (UITableViewCell *)tokenTableView:(TITokenTableViewController *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
self.tableView.frame = CGRectMake(0,0,320,320);
UIView *contentSubview = nil;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifierSubject];
if(!self.txtSubject) {
self.txtSubject = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
self.txtSubject.frame = CGRectMake(10, cell.frame.size.height / 2 - self.txtSubject.font.lineHeight / 2, tableView.tableView.bounds.size.width, 30);
self.txtSubject.placeholder = @"Subject";
[self setupMailData:indexPath.row];
}
contentSubview = self.txtSubject;
}
说,我打开一个草稿。输入字段中的所有细节都已填充,没有任何更改,我点击发送并崩溃了应用程序。我知道造成这种情况的原因。问题是,当您向下滚动时,通常会在屏幕的可视部分下面创建单元格,对吧?但是在这种情况下,如果我发送它而不向下滚动但视口下面的那些单元格不存在,那么就会抛出错误。
如果我打开草稿,向下滚动并点击发送,它可以正常工作。
我需要知道是否有办法立即创建所有这些单元格。甚至是最初位于视口下方的单元格。不依赖于用户向下滚动。
我希望你对我的情况有所了解。有人可以提出解决方案吗?
谢谢。
答案 0 :(得分:0)
按照以下步骤操作:
Scrolling Enabled
= NO(取消选中.xib中的复选框)uitableview reloaddata
方法设置scrollview的tableview框架和内容大小
tblEmail.frame = CGRectMake(yourXPos, yourYPos, yourWidth, tblEmail.contentSize.height);
scrollObj.contentSize = CGSizeMake(yourScrollWidth,tblEmail.contentSize.height+10);
因此,tableview的高度等于其contentize。所以,它一次创建所有单元格。并且设置scrollview的内容大小等于tableview contentsize。所以,滚动功能就像uitableview滚动一样工作......
答案 1 :(得分:0)
使用Storyboard,添加 UITableViewController并将'Content'设置为StaticCells 。 然后,您可以在故事板中定义所有单元格及其内容。您甚至可以在UITableViewController子类中连接到IBOutlets,并且当viewDidLoad被触发时它们将全部为您提供...
使用Storyboard时,获取ViewController的代码如下所示:
[[UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil] instantiateInitialViewController];