Проверьте, чтобы убедиться, что в вашем делегате приложения свойство viewController
не равно nil.Если вы неправильно подключили его в IB (я не вижу его экземпляра в делегате вашего приложения), он будет молча завершаться ошибкой при вызове setTweets
.
Кроме того, если ваш контроллер представления виден и выПереустановите свойство твитов, табличное представление не обновится само.Вместо того, чтобы синтезировать свойство твитов, напишите свой собственный метод получения и установки, например, так (вы можете также использовать KVO для этой цели, если хотите)
-(NSMutableArray*)tweets {
return [[tweets retain] autorelease];
}
-(void)setTweets:(NSMutableArray*)newTweets {
if(newTweets != tweets) {
[newTweets retain];
[tweets release];
tweets = newTweets;
[tView reloadData];
}
}
В качестве отступления вы должны иметь -tableView:numberOfRowsInSection:
return [tweets count]
, а не фиксированное число, и нет необходимости внедрять -tableView:heightForRowAtIndexPath:
, если все ваши строки имеют одинаковую высоту - вы можете просто установить свойство rowHeight
в IB или в коде в табличном представлении.
Обновление
Если ваше свойство контроллера представления не заполняется, может быть проще всего загрузить и добавить его вручную в -application:didFinishLaunchingWithOptions
- я думаю, что ваш текущий подходЗадержка отображения любого интерфейса до завершения веб-запроса концептуально проблематична.Что произойдет, если сеть недоступна?Вот некоторый код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ... omitting the first few lines
// let's make sure that we have the tab bar controller, at least
NSAssert(nil != self.rootViewController, @"tab bar controller not hooked up!");
self.viewController = [[[TwitterViewContoller alloc] initWithNibName:@"TwitterViewContoller" andBundle:nil] autorelease];
self.rootViewController.viewControllers = [NSArray arrayWithObject:self.viewController];
// this is now the Right Way to set the root view for your app, in iOS 4.0 and later
self.window.rootViewController = self.rootViewController;
[self.window makeKeyAndVisible];
}
Есть много способов, которыми вы можете запутаться, когда начинаете новый проект.Мне нравится сначала настраивать все мои представления так, чтобы они имели отвратительный фоновый цвет, поэтому я всегда знаю, отображаются ли они на экране или нет - использование некрасивых цветов помогает гарантировать, что я не забуду изменить их позже.