2013-01-10 58 views
-1

我運行這個功能:不能運行在Objective-C函數

- (void)insertRows { 
    [_objects insertObject:[NSDate date] atIndex:0]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
} 

,它必須運行此功能

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    NSDate *object = _objects[indexPath.row]; 
    cell.textLabel.text = [object description]; 
    return cell; 
} 

,但此功能無法運行......請幫助如何運行的tableView ...功能

- (IBAction)insertObject { 
    [[MasterViewController alloc] insertRows]; 
} 

- 此代碼運行insertRows,我用的斷點

檢查此
- (IBAction)insertObject:(id)sender { 
    [_objects insertObject:[NSDate date] atIndex:0]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    NSLog(@"log:insert-indexPath: %i",indexPath.row); 
    NSDate *object = _objects[indexPath.row]; 
    NSLog(@"log:insert-object %@",object.description); 
} 

-works與它,爲什麼?

+0

可以'self.tableview'爲零? – Chuck

+0

Chuck,no ...因爲如果我通過IBAction(tap button)運行insertRow ... tableview ...作品... – EarthUser

+0

因此可能你沒有調用該方法。 –

回答

2

有這個代碼的一些問題:

•可能要addObject:_objects,不insertObject:atIndex:

[[MasterViewController alloc] insertRows];沒有意義。某處需要有一個init

•不應該使用description方法作爲向用戶顯示某些東西的方法。 description僅用於調試和記錄。

•要觸發調用tableView:cellForRowAtIndexPath:,您通常會使用reload表。即該方法在更新自身時由表視圖調用。

我建議從table view programming guide開始。

+0

中調用這個方法,但是爲什麼這個方法和它一起工作(見主題) – EarthUser