我有一个表格视图,如果点击某一行,则会显示详细信息视图。但细节视图如何知道哪一行被挖掘? 例如,我有一个显示名称的MainController。如果我点击“Johnny”,下一个屏幕应显示带有“Johnny”字符串的标签。我该怎么办?
[编辑 - 补充代码]
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ArticleView *article = [self.storyboard instantiateViewControllerWithIdentifier:@"ArticleView"];
[article.myLabel setText:@"random"];
[self.navigationController pushViewController:article animated:YES];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
NSDictionary *info = [json objectAtIndex:indexPath.row];
cell.textLabel.text = [info objectForKey:@"username"];
cell.textLabel.backgroundColor = nil;
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.backgroundColor = nil;
cell.detailTextLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.text = [info objectForKey:@"user_pic"];
// Configure the cell...
return cell;
}
ArticleView.h
@interface ArticleView : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@end
ArticleView.m
- >合成属性
答案 0 :(得分:2)
您可以将对象(即String Jonny)作为属性传递给详细视图控制器。
@interface ArticleViewController : UIViewController
@property (retain) ArticleView *articleView;
@end
//Don't forget to synthesize name
tableview控制器中的
-(void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath)indexPath
{
NSDictionary *info = [json objectAtIndex:indexPath.row];
ArticleViewController *articleViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ArticleViewController"];
articleViewController.articleView = articleView;
[self.navigationController pushViewController: articleViewController animated:YES];
}
答案 1 :(得分:0)
表视图委托具有方法tableView:didSelectRowAtIndexPath:
,在此方法中,您将显示详细视图,以便知道从indexPath参数中选择了哪一行,并且可以在创建新视图控制器时传递所需的任何信息< / p>
答案 2 :(得分:0)
假设你在这里谈论iPhone,我的详细信息视图中会有一个属性名称:
@propery (nonatomic, retain) NSString * name;
和init方法如下:
- (id) initWithName: (NSString *) name
{
self = [super initWithNibName: @"<view-controller-nib-name>" bundle: nil];
if (self) {
self.name = name;
}
return self;
}
然后在viewDidLoad
在tableView:didSelectRowAtIndexPath:
方法中,获取索引路径引用的名称,使用initWithName:
创建并初始化详细视图控制器,然后按导航堆栈。