Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

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

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

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

Взаимодействие с Bitrix - Objective-C
Всем привет! Есть сайт, написанный на Bitrix, мне нужно взаимодействовать с этим сайтом каким-либо образом, я пока совсем не...

Взаимодействие web сервера с приложением - Objective-C
Доброго времени суток! Я прекрасно понимаю, что мой вопрос будет из разряда глупых, однако я не знаю в какую сторону копать. Поэтому прошу...

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

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

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

Qt взаимодействие с ОС - C++ Qt
Всем доброго времени суток В Qt есть отличная функция, которая открывает ссылку в стандартном браузере ОС, а если я хочу открыть...

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
Привет! Вот еще темы с ответами:

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

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

Взаимодействие VB и VC++ - C++
Взаимодействие VB и VCPP. VB60 и VCPP50. Помогите решить проблемку. Есть VB проект и dll на плюсах. Всё бы хорошо и всё...

Взаимодействие со спрайтом - Unity, Unity3D
Доброго времени суток. Есть скрипт, который генерирует сетку (10 на 10 прямоугольных спрайтов, за основу взят префаб), какие образом можно...


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

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

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