Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
1

Взаимодействие вьюконтроллеров

30.03.2014, 15:56. Просмотров 849. Ответов 8
Метки нет (Все метки)

Здравствуйте,
такой вопрос, допустим у меня есть FirstViewController и SecondViewController
в первом есть кнопка, на втором лейбл.
Как сделать так, чтобы при нажатии на кнопку на первом вьюконтроллере, менялось значение лэйбла на втором вьюконтроллере?
в гугле узнал, что можно сделать через делегат, но как именно сделать не понял
заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 15:56
Ответы с готовыми решениями:

Взаимодействие с Bitrix
Всем привет! Есть сайт, написанный на Bitrix, мне нужно взаимодействовать с...

Взаимодействие web сервера с приложением
Доброго времени суток! Я прекрасно понимаю, что мой вопрос будет из разряда...

Взаимодействие с MySQL, или простой API
Здравствуйте, с программированием под Iphone/IOS я не знаком вообще. Но мне...

Взаимодействие iOS и Windows CE по протоколу TCP/IP
Всем добрый день! Помогите, пожалуйста, бьюсь уже две недели с реализацией...

Взаимодействие VB и VC++
Взаимодействие VB и VCPP. VB60 и VCPP50. Помогите решить проблемку. Есть...

8
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.03.2014, 12:10 2
поиск... поиск вам в помощь )
Не обижайтесь но таких вопросов было много ))

Делегаты
Как передавать данные между контроллерами Tab Bar-a
Передача информации из текстбоксов одного окна в таблицу другого окна
Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2)

Это лишь их малая часть...
1
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
12.04.2014, 15:35  [ТС] 3
Pro2005,
можете подсказать, почему не работает?
первый viewcontroller(с кнопкной)
.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#import <UIKit/UIKit.h>
 
@class INLeftViewController;
 
@protocol DelegateProtocol
 
- (void) updateLabelText: (NSString*) string;
 
@end
 
@interface INLeftViewController : UIViewController
 
@property (weak, nonatomic) id <DelegateProtocol> delegate;
 
@end
.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#import "INLeftViewController.h"
 
@interface INLeftViewController ()
 
@end
 
 
@implementation INLeftViewController
 
@synthesize delegate;
 
- (IBAction)buttonPressed:(id)sender
{
    [self.delegate updateLabelText:@"something"];
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
@end
второй viewcontroller(с лэйблом)
.h
Objective-C
1
2
3
4
5
6
7
8
#import <UIKit/UIKit.h>
#import "INLeftViewController.h"
 
@interface INCenterViewController : UIViewController <DelegateProtocol>
 
@property (weak, nonatomic) IBOutlet UILabel *label;
 
@end
.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#import "INCenterViewController.h"
#import "JASidePanelController.h"
 
 
@interface INCenterViewController ()
 
@end
 
@implementation INCenterViewController
 
@synthesize label;
 
- (void) updateLabelText:(NSString *)string
{
    label.text = string;
}
 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void) viewDidAppear:(BOOL)animated
{
    
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    INLeftViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"];
    controller.delegate = self;
    // Do any additional setup after loading the view.
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
@end
0
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
14.04.2014, 11:59 4
Как я понял вы исп storyboard, тогда исп метод prepareForSegue для инициализации св-ва delegate
Objective-C
1
2
3
4
5
6
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"yourIdentifier"]) {
        INLeftViewController *controller = segue.destinationViewController;
        controller.delegate = self;
    }
}
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
16.04.2014, 00:49  [ТС] 5
Pro2005, результат тот же
0
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
16.04.2014, 00:54 6
Я надеюсь вы заменили эту строчку:
Objective-C
1
@"yourIdentifier"
или просто ctrl+c, ctrl+v )))
0
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
16.04.2014, 02:06  [ТС] 7
Pro2005, в AppDelegate.m добавил вот такой код
Objective-C
1
2
3
4
5
6
7
8
9
10
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    INLeftViewController *leftViewController = (INLeftViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"leftViewController"];
    INCenterViewController *centerViewController = (INCenterViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"centerViewController"];
    leftViewController.delegate = centerViewController;
    
    return YES;
}
также безрезультатно

Добавлено через 32 секунды
Pro2005, естественно)

Добавлено через 10 минут
Pro2005, и соответственно из viewDidLoad в INCenterViewController.m убрал все, что добавил ранее
0
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
16.04.2014, 11:50 8
Вот мой код... все прекрасно работает
https://dl.dropboxusercontent.com/u/25556589/testDelegate.zip
1
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
20.04.2014, 17:19  [ТС] 9
уже решил проблему, видимо дело было в используемой библиотеке JASlidePanels
0
20.04.2014, 17:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2014, 17:19

Взаимодействие C# и 1c
Подскажите как такое реализовать? Есть некие устройства с которыми из программы...

Взаимодействие МК и ПК
Здравствуйте! Недавно я сделал что-то вроде небольшого робота на Arduino UNO...

Взаимодействие 1С и C#
Добрый день. Есть такая задача - написать простейший графический редактор, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru