Мой проект объединен с одним контроллером представления, написанным на объектном C (objCViewController), а другой написан с помощью swift (SwiftViewCOntroller). У меня есть несколько переменных NSString. Я хотел бы обновить строку в objCViewController и получить к ней доступ в SwiftViewController с помощью делегата, потому что мне нужно постоянно переключаться между этими двумя контроллерами представления и постоянно обновлять строку.
Вот код:
objCViewController.h
#import <UIKit/UIKit.h>
@protocol MyDelegate <NSObject>
@end
@interface objCViewController : UIViewController{
NSString * stringbeingpassed;
}
@property (nonatomic, weak) id<MyDelegate> delegate;
@property (nonatomic, retain) NSString * stringbeingpassed;
@end
objCViewController.m
@implementation objCViewController
@synthesize delegate;
@synthesize stringbeingpassed;
- (void)updatestring {
//update string in this method
NSString * newstring = @"testing";
if (delegate != nil && [delegate respondsToSelector:@selector(stringUpdated:)]) {
[delegate stringUpdated: newstring];
}
}
заголовок заголовка.h:
#import "objCViewController.h"
SwiftViewController.swift:
protocol MyDelegate {
func stringUpdated(newMessage: String)
}
import UIKit
@objc class SwiftViewController: UIViewController, MyDelegate{
override func viewDidLoad() {
super.viewDidLoad()
}
func stringUpdated(newMessage:String) {
let newMessage = "sent string"
}
Я пытался использовать делегат, но я понятия не имею, как его использовать. Я совершенно новичок в быстром и объективном C
Q1. Я хотел бы спросить, как я могу назначить мою новую строку для делегирования в objCViewController, а затем передать ее в SwiftViewController.
Q2. Другой вопрос заключается в том, как я могу получить данные в делегате в SwiftViewController. Что мне добавить?
Q3. Что-нибудь еще, что я пропустил при определении делегата? Нужно ли мне определять его в обоих контроллерах просмотра? Спасибо.