我是IOS的新手,我正在研究UITableView
。我想从两个不同的View Controller中填充表视图中的数据。我想要从View Controller更新cell.textLabel.text
说viewController1
和cell.detailTextLabel.text
来自另一个View Controller说viewController2
。
我在tableView
的右上方有一个按钮,然后点击它导航到View Controller A.我在View Controller A中有一个文本标签,它返回用户输入到tableView的内容。
当我单击单元格时,它会导航到View Controller B.我在View Controller B中也有一个文本标签。
这是我的tableView
数据源方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
Names *namesToDisplay = [self.lists objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = namesToDisplay.firstName;
return cell;
}
其中Names
是NSObject
的模型类,而NSArray
中的列表是tableView
。
如果我从单个View Controller更新cell.textlabel.text
和cell.detailtextlable.text
,则可以使用View Controller1或View Controller2。
我可以从viewController2
获取数据,但我应该在哪里cell.detailTextLabel.text
?
答案 0 :(得分:0)
编码惯例...... http://en.wikipedia.org/wiki/Naming_convention_%28programming%29#Java是一个很好的方向。
看起来简单的参数处理。您可以在init进程中共享视图之间的信息。
即
// your details view (vc2) header
@class Names;
@interface MyDetailsViewController
{
Names *names;
// some variable declaration here
}
// maybe some properties...
- (id)initWithObject:(Names *)p_names;
// ...
@end
...
// your details view (vc2) main
- (id)initWithObject:(Names *)p_names
{
if ((self = [super init]))
{
names = p_names; // so you have the data when the tableView is loading
}
}
...
// your main view (vc1)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Names *namesToDisplay = [self.lists objectAtIndex:indexPath.row];
MyDetailsViewController *viewController2 = [[MyDetailsViewController alloc] initWithObject:namesToDisplay];
[self.navigationController pushViewController:viewController2 animated:YES];
}
如果还有其他问题,请准确提供更多信息;)