2013-03-19 2 views
0

Я пытаюсь выполнить что-то невероятно простое. Я пытаюсь программным образом нажать на viewController, когда только объект в моем представлении коллекции нажат. Ничего не произошло. Я считаю, что в моем запутанном беспорядке есть несколько проблем. Мое понимание основ массивов явно не что иное. Если я поставлю строку NSLog внутри моего оператора if, я ничего не получаю при нажатии на мой одиночный элемент. Вот мой метод didSelectItemAtIndexPath:didSelectItemAtIndexPath pushViewController

NSMutableArray *itemApp = [model.viewControllers objectAtIndex:indexPath.row]; 

if (itemApp == 0) { 
    NSLog (@"This does not appear") 
    TableViewController *ctc = [[TableViewController alloc] initWithStyle:UITableViewStylePlain]; 
    [self.navigationController pushViewController:ctc animated:YES]; 
} 

модель определяется в viewDidLoad:

model = [[SimpleModel alloc] init]; 

SimpleModel упоминается в реализации .m:

@implementation smileController; 

{ 
SimpleModel *model; 
}  

viewControllers является свойством класса SimpleModel, наряду со своим другом, приложениями:

@property (nonatomic, strong) NSMutableArray *apps; 
@property (nonatomic, strong) NSMutableArray *viewControllers; 

Вот SimpleModel.m

- (id)init 
{ 
if (self = [super init]) 
{ 

    self.apps = [NSMutableArray arrayWithObjects:@"1", nil]; 

    self.viewControllers = [NSMutableArray arrayWithCapacity:self.apps.count]; 

    TableViewController *tvc = [[TableViewController alloc] init]; 

    [self.viewControllers addObject:tvc]; 
} 
return self; 
} 
+2

Почему вы ожидаете, что ItemApp равняется 0? Это должно быть tvc, не так ли? – rdelmar

+0

Наличие 'if (itemApp == 0)' совпадает с 'if (itemApp == nil)'. Поскольку ваш массив 'model.viewControllers' не может иметь значений' nil', переменная 'itemApp' может быть только' nil', если 'self.viewController' также' nil'. Учитывая имя 'self.viewControllers', не получило бы определенное значение, возвращающее объект' UIViewController', а не другой 'NSMutableArray'? – rmaddy

ответ

2

В SimpleModel.m вы заселить viewControllers массив с одним TableViewController.

Учитывая это, когда первый блок кода, который должен быть размещен примерно так:

TableViewController *itemApp = [model.viewControllers objectAtIndex:indexPath.row]; 

if (itemApp) { 
    NSLog (@"This should appear") 
    [self.navigationController pushViewController:itemApp animated:YES]; 
} 

Это предполагает, что вы хотите, чтобы нажать на контроллер представления вы получите от model.viewControllers собственности.

Пожалуйста, обратите внимание, что itemApp может быть только nil если model или model.viewControllers являются nil.

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