Установка NSString не работает - PullRequest
       11

Установка NSString не работает

0 голосов
/ 25 декабря 2010

Привет всем, вот забавный.У меня есть два ViewControllers: первый (срабатывает при загрузке приложения) -> отображает textField и кнопку.Когда кнопка нажата, текст в textField должен быть передан второму ViewController через метод действия кнопки.второй ViewController предназначен для отображения текста в метке.Строка остается пустой :-( Метка не изменяется: - (

Другое, что я сделал - внутри метода действия первого ViewController - я создал новую UILabel (вы не можете увидеть ее здесь ...), установите его текстовое поле для ввода, который я получил от пользователя, затем я установил метку второго ViewController на эту. Метка все еще не изменилась, но по крайней мере текстовое поле новой метки изменилось.мог бы объяснить это и мне, а = я буду рад узнать еще одну новую вещь ...

первый код контроллера:

#import "FlipsideViewController.h"

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    UITextField *theTextInput;
}

@property (nonatomic, retain) IBOutlet UITextField *theTextInput;
- (IBAction)textFieldDoneEditing:(id)sender;

- (IBAction)showInfo:(id)sender;

@end 

соответствующая часть .m ("FlipsideViewController"это второй ViewController, о котором я говорил):

- (IBAction)showInfo:(id)sender {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;
controller.textToTransmit.text = self.theTextInput.text;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

, а это второй ViewController:

#import <UIKit/UIKit.h>

@protocol FlipsideViewControllerDelegate;


@interface FlipsideViewController : UIViewController {
    UILabel *textToTransmit;
    id <FlipsideViewControllerDelegate> delegate;

}

@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UILabel *textToTransmit;
- (IBAction)done:(id)sender;
-(void)updateLabel:(NSString *)str;
@end


@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
@end

и его файл .m:

#import "FlipsideViewController.h"


@implementation FlipsideViewController
@synthesize textToTransmit;
@synthesize delegate;



- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];      
}


- (IBAction)done:(id)sender {
    [self.delegate flipsideViewControllerDidFinish:self];   
}

....

Любой изВы, у кого хватило терпения прочитать мой вопрос - я буду благодарен за ответ, который поможет мне двигаться вперед.

С уважением, Джо

Ответы [ 2 ]

1 голос
/ 25 декабря 2010

Используйте отладчик и установите точку останова в строке

controller.textToTransmit.text = self.theTextInput.text;

Проверьте, существует ли UILabel (не ноль), если нет, возможно, вы забыли связать ее в Интерфейсном Разработчике.

Вы также можете использовать свойство NSString (вместо UILabel) для передачи данных в контроллер и перезаписать метод setter для установки текста метки.

0 голосов
/ 25 декабря 2010

изменить положение вашей строки, которая устанавливает текст, так что после вашего presentModalViewController:

FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];

controller.textToTransmit.text = self.theTextInput.text;
[controller release];
...