Как контроллер табличного представления взаимодействует с его подробным представлением? - PullRequest
0 голосов
/ 20 января 2012

У меня есть табличное представление, и если коснуться определенной строки, отобразится подробное представление.Но как в подробном представлении узнать, какая строка была нажата?Так, например, у меня есть MainController, который отображает имена.Если я нажму «Джонни», то на следующем экране должна появиться метка со строкой «Джонни».Как бы я это сделал?

[РЕДАКТИРОВАТЬ - Добавлен код]

- (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

-> Синтезирующие свойства

Ответы [ 3 ]

2 голосов
/ 20 января 2012

Вы можете передать объект (то есть String Jonny) в контроллер подробного представления как свойство.

@interface ArticleViewController : UIViewController
@property (retain) ArticleView *articleView;
@end

//Don't forget to synthesize name 

в контроллере табличного представления

-(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];
}
0 голосов
/ 20 января 2012

Предполагая, что вы говорите об iPhone здесь, у меня в подробном представлении будет имя свойства:

@propery (nonatomic, retain) NSString * name;

и метод инициализации следующим образом:

- (id) initWithName: (NSString *) name
{
   self = [super initWithNibName: @"<view-controller-nib-name>" bundle: nil];
   if (self) {
      self.name = name;
   }
   return self;
}

, а затем установитеметка имени в viewDidLoad

В методе tableView:didSelectRowAtIndexPath: получите имя, на которое ссылается путь индекса, создайте и запустите контроллер подробного представления, используя initWithName:, затем вставьте стек навигации.

0 голосов
/ 20 января 2012

делегат табличного представления имеет метод tableView:didSelectRowAtIndexPath:, в этом методе вы представляете подробное представление, чтобы знать, какая строка была выбрана из параметра indexPath, и можете передавать любую необходимую информацию при создании нового контроллера представления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...