Я знаю, что этот вопрос задан, но я прочитал ответы, принял исправления и все еще имею проблему где-то, что я не могу определить.IOS Obj-C ViewController не передается значение
У меня есть приложение IOS, которое похоже на электронную почту. Он имеет InboxVC, который является tableVC с пользовательской ячейкой прототипа, которая после выбора запускает messageDetailVC.
Проблема в том, что сообщениеDetailVC запускается, но значения не передаются ему. Я добавил сообщения журнала, чтобы оценить значение в коде, прежде чем обращаться к проблемам раскадровки, а передаваемая переменная (messageID) имеет значение NULL.
Может ли кто-нибудь сказать мне, что мне не хватает или что-то не так? Мой код:
InboxVC.m (фрагмент)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"%@: Message touched...", LOG_TAG);
messageDetail *mdvc = [[messageDetail alloc] init];
mdvc.messageID = @"123456789-1";
[self.navigationController pushViewController:mdvc animated:YES];
NSLog(@"%@: messageID value is = %@",LOG_TAG,mdvc.messageID);
//messageID has valid value here
}
messageDetail.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface messageDetail : UIViewController
{
NSString *messageID;
}
@property (strong, nonatomic) NSString *messageID;
@property (strong, nonatomic) IBOutlet UITextView *body;
messageDetail.m
#import <Foundation/Foundation.h>
#import "messageDetail.h"
static NSString * LOG_TAG = @"messageDetailController";
@implementation messageDetail
@synthesize messageID;
@synthesize body;
- (void)viewDidLoad {
[super viewDidLoad];
body.text = messageID;
//debug messages
NSLog(@"%@:Added messageID as Body text", LOG_TAG);
NSLog(@"%@:Value of body.text is = %@", LOG_TAG, body.text);
NSLog(@"%@:Value of messageID is = %@", LOG_TAG, messageID);
//messageID has null value here
}
- (void) viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO];
}
MainStoryboard:
У меня есть сообщениеDetail view, связанное с сообщением Подкласс класса UIViewController. Существует сегмент с идентификатором «s_msgDetail» из события выбора ячейки прототипа в messageDetailVC (показ). Как я уже сказал выше, появляется сообщение MessageDetailVC, но не с телом body.text, установленным на значение «messageID».
возможно, код в viewDidLoad выполняется до этой строки: mdvc.messageID = @ "123456789-1"; Правильный способ сделать это - это настраиваемый метод init, который принимает любые входные параметры, которые вы хотите передать вперед. – Woodstock