2015-09-04 137 views
-2

我想弄清楚如何使用 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 方法並從另一個視圖控制器調用它。如何從另一個視圖控制器調用方法

LocationViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //save bar button item 
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle: @"Save" style: UIBarButtonItemStylePlain target: self action: @selector(saveButtonPressed)]; 

    self.navigationItem.rightBarButtonItem = saveButton; 

    [self performSelector:@selector(saveButtonPressed) withObject:nil afterDelay:0.25]; 
} 

-(void)saveButtonPressed { 

    //I want to call the method here 

} 

GameDetailsTableViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifer1 = @"GameDetailsLocationCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifer1]; 

    cell.textLabel.text = @"hello world" 

    return cell; 
} 

我在IOS一個初學者,我將不勝感激任何幫助。

+0

你爲什麼要這樣? – anhtu

+0

它是我正在處理的另一個項目的一部分 – av993

+0

創建另一個控制器的對象並調用該方法。 –

回答

3

你不能調用cellForRowAtIndexPath,但你可以從另一個類觸發tableview的數據源方法。繼承人如何

假設你想從B類的方法someMethod

觸發類cellForRowAtIndexPath課堂上午

-(void)viewDidLoad{ 
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(somemethodToReloadtableview) name:@"NOTIFICATIONNAME" object:nil]; 
} 
//Implement the method 
-(void)somemethodToReloadtableview{ 
[self.customTableViewName reloadData]; 
} 

類家蠶

-(void)methodFromWhichYouWantToTrigger{ 
[[NSNotificationCenter defaultCenter]postNotificationName:@"NOTIFICATIONNAME" object:nil]; 
} 

PS - 這個方法將調用所有tableview的數據源如numberOfRows。 希望這可以幫助

+0

非常感謝!這很有效 – av993

0

我不知道你爲什麼要手動撥打tableView: cellForRowAtIndexPath:。如果您希望表格視圖重新載入數據,則可以在表格視圖上調用reloadData方法。

[yourTableView reloadData]; 

如果你想從另一個視圖控制器觸發此,您可以從其他視圖控制器發佈通知,聽從哪裏表視圖中存在的一個。 Saheb的回答描述瞭如何發佈通知並收聽。

+0

你的答案對saheb的答案有什麼額外的信息? –

+0

它不提供任何額外的信息。但是,它提供了清晰度。如果你覺得,這是不必要的答案,你可以刪除它! –

相關問題