2013-03-19 3 views
1

Я хочу перезагрузить данные UITableview из другого UIView.reload data uitableview с другого взгляда

(UITableview в ListNoteViewController)

вызов я из DetailViewController (другой UIView) является:

ListNoteViewController *controller = [[ListNoteViewController alloc] initWithNibName:@"ListNoteViewController" bundle:[NSBundle mainBundle]]; 

[controller.TableNotes reloadData]; 

, но ничего не происходит. Пожалуйста, кто-нибудь может мне помочь?

Advanced благодаря

+1

вы можете использовать Пользовательский делегат для достижения этого – Vinodh

+0

См. Мой ответ. Надеюсь, что эта концепция понятна и вы можете задать вопрос, есть ли у вас больше сомнений. –

ответ

3

Ничего не произойдет, потому что вы пытаетесь перезагрузить TableView, который еще не создан! Элементы пользовательского интерфейса, такие как UITableView, UILabel и т. Д., Будут созданы только после того, как загрузится представление конкретного UIViewController. Здесь вы только что инициализировали viewcontroller.

Таким образом, вы должны написать в

 -(void)viewDidAppear:(BOOL)animated 
    { 
     [self.TableNotes reloadData]; 
    } 

ИЛИ

-(void)viewWillAppear:(BOOL)animated 
    { 
     [self.TableNotes reloadData]; 
    } 

вашего ListNoteViewController.

Это проблема с кодом. И в случае, если ListNoteViewController уже находится в стеке, т. Е. Если вы уже загрузили один и тот же диспетчер представлений и теперь пытаетесь перезагрузить его на столе, вы можете использовать пользовательских делегатов для достижения того же.

вы можете увидеть how to add a delegate здесь.

3

Вы можете использовать делегатов.

в DetailViewController.h

@property (nonatomic, strong) id Delegate; 

В ListNoteViewController.m

-(void)myTVReloadMethod { 
[myTable reloadData]; 
} 

И когда вы собираетесь DetailViewController

DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]]; 
dvc.Delegate = self; 
[self.navigationController pushViewController:dvc animated: yes]; 

В любом методе в DetailViewController

[delegate performSelector:@selector(myTVReloadMethod) withObject:nil]; 
+0

Привет. Я использую MFSideMenu. Я не могу передать данные в menuViewController. Это содержит список в tableview, потому что menuviewcontroller уже загружен и tableview вызывается перед регистрацией. –

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