2015-08-28 4 views
1

SetScoringTableViewController.h:Как отобразить переменную из другого класса?

@interface SetScoringTableViewController : UITableViewController 
@property (nonatomic, strong) NSString *name1; 
@end 

SetScoringTableViewController.m:

@implementation SetScoringTableViewController 
@synthesize name1; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    name1 = @"Hello World" 
} 

GameDetailsTableViewController.m

if (indexPath.section == 0 && indexPath.row == 0) { 

    SetScoringTableViewController *setScoring = [[SetScoringTableViewController alloc]init]; 

    static NSString *CellIdentifer1 = @"GameDetailsSetScoringCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer1]; 
    label = (UILabel *)[cell viewWithTag:0]; 


    label.text = [NSString stringWithFormat: @" %@", setScoring.name1]; 

      return cell; 
} 

Когда я пытаюсь запустить его, все это я получаю пустой. Не могли бы вы помочь мне найти, как отображать «Hello World» на моем лейбле. Любая помощь будет принята с благодарностью.

ответ

2

Метод viewDidLoad, вероятно, еще не вызван. Переопределить метод init на вашем SetScoringTableViewController и установите значение там:

- (instancetype)init { 
    if (self = [super init]) { 
     _name = @"Hello World"; 
    } 
    return self; 
} 

Почему вы инстанцировать контроллер представления от метода cellForRowAtIndexPath? Это сразу же отменяется.

+0

спасибо, что это сработало :) – av993

1

Когда вы вызываете setScoring.name1 в свой GameDetailsTableViewController.m, вы вызываете свойство объекта, который вы только что создали, в SetScoringTableViewController *setScoring = [[SetScoringTableViewController alloc]init];. Ваш viewDidLoad никогда не исполнялся, или даже если это было, setScoring - еще один пример класса SetScoringTableViewController.

Прежде чем называть его, сначала необходимо присвоить значение name1. Например:

if (indexPath.section == 0 && indexPath.row == 0) { 

SetScoringTableViewController *setScoring = [[SetScoringTableViewController alloc]init]; 

static NSString *CellIdentifer1 = @"GameDetailsSetScoringCell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer1]; 
label = (UILabel *)[cell viewWithTag:0]; 

setScoring.name1 = @"Hello World" 

label.text = [NSString stringWithFormat: @" %@", setScoring.name1]; 

     return cell; 
} 

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

Смежные вопросы