Как я могу передать вывод таблицы на другой контроллер представления? - PullRequest
0 голосов
/ 07 февраля 2012

Я понимаю, что подобные вопросы задавались, но потратили часы, пытаясь решить проблему.Я новичок.Могу поспорить, что это просто оператор импорта или объявление переменной.

Я использовал закладку FirstViewController для вызова SecondVieWController с табличным представлением.Вывод таблицы фиксируется в метке tableOutput под таблицей на SecondViewController.[Это работает.] Я нажимаю на вкладку и возвращаюсь в FirstViewController.Как мне получить доступ к этому значению tableOutput, например, поместить его в метку titleLabel?

Я пробовал варианты
titleLable.text = SecondViewController.tableOutput.text

, нопросто получить сообщение об ошибке «Свойство tableOutput не найдено для объекта типа UIViewController».

Мне удалось сделать это с помощью контроллера popover в приложении для iPad, но у меня возникли проблемы с реализацией подобной вещи, начиная с iPhoneконтроллер представления с вкладками.

Что я делаю не так?

Спасибо.

-Rob

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Что вам нужно сделать, это получить ссылку на ваш фактический SecondViewController объект. Самый простой способ сделать это - создать соединение IBOutlet с вашим SecondViewController объектом, а затем получить доступ к метке через этот член.

В вашем FirstViewController.h:

#import "SecondViewController.h"

@interface 

    @property(nonatomic, retain) IBOutlet SecondViewController *secondView;

@end

В FirstViewController.m:

@implementation FirstViewController

@synthesize secondView;

Как только вы объявите это, перейдите в свой файл xib и установите связь между FirstViewController и SecondViewController

Затем вы можете получить доступ к метке tableOutput как

secondView.tableOutput.text;

EDIT:

Глядя на первоначальную настройку новых приложений с вкладками, ваши контроллеры представлений, вероятно, создаются в коде в файле AppDelegate.m, например:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
    UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

Используя ту же идею, что я изложил выше, только вам не нужно объявлять связь как IBOutlet:

@property (nonatomic, retain) SecondViewController* secondView;

Затем, когда создаются контроллеры вида, вы можете изменить его, чтобы он выглядел следующим образом

FirstViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
SecondViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
viewController1.secondView = viewController2;

А затем получите доступ к метке, как я показывал изначально

0 голосов
/ 07 февраля 2012

Для других с аналогичными потребностями:

Благодаря Дэну Ф я все еще не мог заставить свое приложение передавать вывод таблицы в одном VC другому VC.В этом видео на YouTube Коннор Денман представил решение: http://www.youtube.com/watch?v=_5cW90_aYqg

  1. Получить вывод таблицы в didSelectRowAtIndexPath:

tableOutput.text = [NSString stringWithFormat: @ "% @", [tableArray objectAt Index: indexPath.row]];

  1. Как показано на видео, определите класс и строковую переменную в AppDelegate.(например, appDelegate и myString)

  2. Присвойте значение tableOutput переменной:

appDelegate.myString = tableOutput.text

  1. В подпрограмме viewWillAppear другого контроллера представления используйте

    titleLabel.text = appDelegate.myString

Видео показывает, что импортирует, декларации,@property и операторы @synthesis, которые вам нужны.

-Благодарю Коннора и Дана за помощь.

-Rob

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