2011-04-28 240 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;

}

現在你的數據添加
感謝-----