2011-04-28 194 views
1

我在我的nib文件中有一个UITableView,并且想要动态地将一些内容添加到该TableView中的每个单元格。有没有办法做到这一点?我有一列我想在TableView中显示的文本以及一组图片。UITableView动态添加单元格

+1

你怎么想创建tableViewCells。你有一些代码吗?如果是的话,我们可以更好地帮助代码。 – 2011-04-28 21:12:44

+0

我没有任何代码。我只是把一个UITableView放在xib文件中,并且想动态地将一些内容添加到那个UITableView中。 – locoboy 2011-04-29 06:01:24

回答

4

您需要实现UITableViewDataSource协议并覆盖

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

方法。你会想要返回数组的长度为tableView:numberOfRowsInSection:方法。在tableView:cellForRowAtIndexPath:方法中,您将创建UITableViewCell(如果可用,请先出队),然后添加要保存数据的UIView(即UIImage等)。使用indexPath.row作为数组的索引访问数据以填充视图。这一切都有道理吗?这听起来有点复杂。

Here is the documentation for the UITableViewDataSource protocol

+0

此示例代码也应该有帮助http://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007318 – ljkyser 2011-04-28 21:19:20

+0

在示例中:http:/ /developer.apple.com/library/ios/#samplecode/TableViewSuite/Listings/1_SimpleTableView_Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007318-1_SimpleTableView_Classes_RootViewController_m-DontLinkElementID_4 @“MyIdentifier”究竟是指什么? – locoboy 2011-04-29 06:50:21

+1

它本质上就像一个标签。一个字符串,用于标识之前创建的单元类型。样本中的下一行尝试获取之前由该标识符创建的单元格,该单元格不再被使用(即它已经滚动到屏幕外)。如果可以,它会重用该单元格,如果不是,则会创建一个新单元格并为其提供重用标识符。重用标识符在每个单元的基础上不是唯一的,但是如果这是有意义的,则按照单元类型的基础。让我知道如果这一切都不清楚,我会尽力澄清。 – ljkyser 2011-04-29 06:55:58

0

我的理想是作为用于每个单元的观察者来注册,则感兴趣的内容发生了变化,然后将其发送事件或必要的数据的那些细胞。通过比较一些信息,比如当前的indexPath,或者一些单元的唯一标识符,单元可以决定接受那些发送的数据并改变自己,或者只是传递这个发送的事件和数据。

我已经实现了上面在后台加载缩略图的图像,当图像被加载后,它会通知那些单元更新图像。如果任何源数据已被修改,它将通知那些已注册的单元,然后这些单元将重新加载必要的数据以更新其内容。

0

如果想从一个视图控制器动态地添加细胞和数据对细胞向其他泰伯维CONTROLER ----

步骤 - 1:[[NSNotificationCenter defaultCenter] postNotificationName:@ “ReturnTableView” 对象:(发送数组对象或任何对象)];

步骤 - 2:去你的表视图控制器

步骤 - 3:在YourTableView.h文件中添加这个方法: - (无效)change_view:(NSNotification *)通知符;你可以在YourTableView.m文件中添加viewDidLoad --- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(change_view :) name:@“ReturnTableView”object:nil]步骤4: ;

步骤 - 5:现在的方法添加在YourTableView.m ---- - (无效)change_view:(NSNotification *)通知符{

if([[notif name] isEqualToString:@"ReturnTableView"]){ 
    Your Object Ref(Obj-1)=[notif object]; 
    [Obj-1 addObjectsFromArray:self.AnotherMutableArray(obj-2)]; 
    self.obj-2=Obj-1; 
    [self.tableView reloadData]; 
} 

} 步骤 - 6:现在添加最后,在

  • (的UITableViewCell *)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath { 的UITableViewCell *细胞= [的tableView dequeueReusableCellWithIdentifier:@ “CellIdentifierName”];

    UILabel * label;

    label =(UILabel *)[cell viewWithTag:TagNo(e。G:0)]; label.text = [self.messageposts objectAtIndex:indexPath.row]; label =(UILabel *)[单元格viewWithTag:TagNo(例如:1)]; label.text = [self.messageposts objectAtIndex:indexPath.row];

    return cell;

}

现在你的数据添加
感谢-----