0

这是我的代码的一部分。当我尝试加载包含 uitableview 的视图时,我的应用程序崩溃了。我认为我正在尝试使用但找不到的表有问题。请帮忙

    gameTimingTable=[NSArray arrayWithObjects:@"2min + 10sec/coup",@"1min + 15sec/coup",@"5min",nil];

在 .h 中声明,因为NSArray *gameTimingTable; 这是我用来将表分配给 uitableview 的代码

- (void)viewDidLoad {   

gameTimingTable=[NSArray arrayWithObjects:@"2min + 10sec/coup",@"1min + 15sec/coup",@"5min",nil];



}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // There is only one section.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of time zone names.
    return [gameTimingTable count];
}


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

    static NSString *MyIdentifier = @"MyIdentifier";

    // Try to retrieve from the table view a now-unused cell with the given identifier.
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    // If no cell is available, create a new one using the given identifier.
    if (cell == nil) {
        // Use the default cell style.
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
    }

    // Set up the cell.
    NSString *cadence = [gameTimingTable objectAtIndex:indexPath.row];
    cell.textLabel.text = cadence;

    return cell;
}

/*
 To conform to Human Interface Guildelines, since selecting a row would have no effect (such as navigation), make sure that rows cannot be selected.
 */
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return nil;
}

多谢

4

1 回答 1

0

这里的问题可能是两件事之一(或两者):

1...您从 willSelectRowAtIndexPath 方法返回 nil 。如果您没有用户能够点击单元格,请不要覆盖此方法,即根本不要触摸它。除此之外,在 cellForRowAtIndexPath 方法中,您可以执行以下操作:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

以确保当用户点击它时单元格甚至不会突出显示。

2...您初始化数组gameTimingTable的方式意味着它在您创建后自动释放,因此无法在代码中的其他地方访问它。请改用以下任一方法对其进行初始化:

gameTimingTable=[[NSArray arrayWithObjects:@"2min + 10sec/coup",@"1min + 15sec/coup",@"5min",nil] retain];

// OR ...

 gameTimingTable=[[NSArray alloc] initWithObjects:@"2min + 10sec/coup",@"1min + 15sec/coup",@"5min",nil];

...但请记住在 dealloc 方法中释放数组:

- (void)dealloc {
[gameTimingTable release];
[super dealloc];

}

于 2009-11-27T17:37:55.133 回答