2013-11-19 2 views
-1

У меня есть два класса. И мне нужно вызвать метод из другого класса для reloadData UITabelView on View. Вот мой код:Objective-C public method и self

FullDescriptionView.h

#import <UIKit/UIKit.h> 

UITableView *maintable; 

@interface FullDescriptionView : UIViewController <UIAlertViewDelegate> 
{ 
    NSInteger heightcell; 
} 

+(void)refreshmaintable; 
-(IBAction)done:(id)sender; 
@property (nonatomic) UITableView *maintable; 

@end 

FullDescriptionView.m

+(void)refreshmaintable 
{ 
    [maintable reloadData]; // Don't reload 
    //I need [self.maintable reloadData]; this work but don't debug ERROR!!! 
} 

CellThird.m

... 
else if(mainsegment.selectedSegmentIndex==1) 
{ 
    [FullDescriptionView refreshmaintable]; 
} 
... 
+0

Что вы хотите сделать? –

+0

@AnoopVaidya Мне нужно перезагрузить UITableView на виду из другого класса. – Zuhan

+0

Использование NSNotification –

ответ

0

Прежде всего, ваш refreshmaintable является статическим методом. Это означает, что (среди прочего) он может быть вызван без экземпляра этого класса, как вы делаете [FullDescriptionView refreshmaintable];, это не будет работать в вашем случае, ваше представление вида/таблицы не загружается.

Вы должны сделать метод как -(void)refreshTableView, но это потребует, чтобы иметь реальный экземпляр этого класса, что-то вроде:

FullDescriptionView *theView = [FullDescriptionView alloc] init]; //or other init method 
[theView refreshmaintable]; 

Одно дополнительное примечание: я использовал ваш метод именования думать, что вы будете лучше понимать , но вы должны взглянуть на соглашения об именах ящиков.

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

1

класс использование NSNotification для этого

сообщения этого кода в вашем FullDescriptionView.m файл методе viewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshmaintable) name:@"ReloadTable" object:nil]; 

И добавить этот метод также в том же виде.

-(void)refreshmaintable 
{ 
    [maintable reloadData]; // Don't reload 
    //I need [self.maintable reloadData]; this work but don't debug ERROR!!! 
} 

и сообщение Извещение вызова метода перегрузочной Tableview из

CellThird.m

... 
else if(mainsegment.selectedSegmentIndex==1) 
{ 
    NSNotification *notify=[NSNotification notificationWithName:@"ReloadTable" object:self userInfo:nil]; 
    [[NSNotificationCenter defaultCenter] postNotification:notify]; 
} 
... 
Смежные вопросы