Как передать строку из одного представления в другое в приложении на основе вкладок - PullRequest
0 голосов
/ 06 июня 2011

Я создал приложение на основе вкладок, имеющее 4 вкладки и 4 представления, соответствующие этим вкладкам.У меня есть строка в первом представлении, и когда я печатаю эту строку во втором виде, она печатает ноль.

В первом представлении. H

NSString *dateString;
@property(nonatomic,retain) NSString *dateString;

В первом представлении. M

@synthesize dateString;
dateString=button6.titleLabel.text;
NSLog(@"dateString:%@",dateString);

Во втором представлении. Ч.

NSString *dateString;
@property(nonatomic,retain) NSString *dateString;

Во втором представлении. М

@synthesize dateString;

- (void)viewDidLoad { [super viewDidLoad];
    NSLog(@"dateString:%@",self.dateString);
}
.

Ответы [ 5 ]

2 голосов
/ 06 июня 2011

Добавьте ваши контроллеры представления в качестве свойств для делегата приложения (если приложение является относительно простым дизайном).

Затем вы можете ссылаться на свойства второго контроллера представления из первого контроллера представления посредством делегата приложения.(Одним из таких свойств может быть строка, которую вы хотите, чтобы второй VC скопировал или сохранил.)

1 голос
/ 06 июня 2011

Создать NSString переменную в приложении делегировать класс и установить Свойство и заставить синтезировать эту переменную.

И установить @ "" (пустое) значение в applicationDidFinishLaunching метод.

Например - мое имя переменной str, затем инициализировать str в applicationDidFinishLaunching как self.str = [NSString stringWithFormat:@""];

И теперь вы можете использовать его на любой вкладке * просмотреть * и установить значение в соответствии с вашими требованиями.

Код больше

AppDelegate.h

@interface AppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    NSString *baseURL;
}

@property (nonatomic, retain) NSString *baseURL;

@end

AppDelegate.m

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize window;
@synthesize baseURL;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    self.baseURL = [NSString stringWithFormat:@""];
}

- (void)dealloc 
{
    [baseURL release];

    [window release];

    [super dealloc];
}

@end

ViewController1.h

@class AppDelegate;

@interface ViewController1 : UIViewController <UITextFieldDelegate>
{
    AppDelegate *appDelegate;
}

@end

ViewController1.m

#import "AppDelegate.h"
#import "ViewController1.h"

@implementation ViewController1

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        NSLog(@"value - %@",appDelegate.baseURL); // Here you can set or get the value.
}
0 голосов
/ 06 июня 2011

Вот простое, но не лучшее решение, создайте глобальную переменную и просто используйте ее.

Заголовок

  extern NSString *GlobalString;
    @interface GlobalVariables : NSObject {
    }

@end

реализация

#import "GlobalVariables.h"

@implementation GlobalVariables
 NSString *GlobalString;
@end

И теперь, чтобы получить доступ к переменной, просто импортируйте заголовок в файл, который вы хотите использовать.Возможно, вы захотите проверить, инициировано ли это, прежде чем использовать его.

0 голосов
/ 06 июня 2011

Действительно, мы потеряли фокус MVC и самые удивительные способности, которые легко сделать в iPhone Development?

Как насчет делегата?

@protocol ViewOneDelegate
- (void)getStringVariable;
@end

@interface ViewOneModel : NSObject
{
    NSString* _stringVariable;
    id<ViewOneDelegate> _theDelegate;
}

@property (nonatomic, retain) id<ViewOneDelegate> theDelegate;

@end

Назначьте контроллер делегатом для ViewOneModel.

0 голосов
/ 06 июня 2011

это может быть не лучший ответ. Но создание строковой переменной в appdelgate и передача этой переменной из первого представления и выборка из второго просмотра работает для меня

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