使用以下内容:
- (NSInteger) tableView: (UITableView*) tableView numberOfRowsInSection: (NSInteger) section
此委托方法返回您想要在该特定部分中的行数。所以如果你想要超过 2 行,或者你希望行数是动态的,你可以在 AppDelegate 或者 viewController 类的 init 方法中创建一个 NSArray,然后在 numberOfRowsInSection 方法中返回数字,比如
return [delegate numberOfNames];
在上面的示例中,我在 AppDelegate 中创建了一个数组,还创建了一个方法来返回我在该数组中拥有的对象数,以便我可以为我的表创建行数。
- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath
此委托方法将显示您希望在每个单元格中显示的内容。因此,继在我的 AppDelegate 中创建的数组之后,我首先创建单元格,然后我将使用我在 AppDelegate 中创建的方法设置要在单元格上显示的文本,该方法将在接收 NSInteger 时返回 NSString 所以我可以遍历我的数组并相应地显示文本。
static NSString* MyIdentifier = @"Default";
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if( cell == nil )
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
cell.textLabel.text = [delegate nameAtIndex:indexPath.row];
}
nameAtIndex 是我在 AppDelegate 中创建的方法的名称,它将从我创建的 NSArray 中返回特定索引处的 NSString 对象(即行号),以存储我的表的所有项目。
当用户单击创建的表中的任何行时,将调用此委托方法
- (void) tableView: (UITableView*) tableView didSelectRowAtIndexPath: (NSIndexPath*) indexPath
在这里,我将检查显示的文本是否与存储表中项目的 AppDelegate 中的数组中的任何项目匹配,并创建必要的视图。
UIViewController* viewController = nil ;
NSString* nameInArray = [delegate nameAtIndex:indexPath.row] ;
if( [nameInArray isEqualToString:@"firstName"] )
{
viewController = [[FirstViewController alloc] init];
}
else if( [nameInArray isEqualToString:@"secondName"] )
{
viewController = [[SecondViewController alloc] init];
}
else if( [nameInArray isEqualToString:@"thirdName"] )
{
viewController = [[ThirdViewController alloc] init];
}
因此,使用这 3 个委托方法,您将能够使用创建的 NSArray 创建表,并能够根据用户在表中选择的选项将用户重定向到 viewController。如果您还选择向表中添加更多行,则不必继续编辑委托方法,因为在设置表时会返回数组的计数。
数组和获取数组数据的方法也可以在 viewController 中创建,不一定在 AppDelegate 中创建,以防您想知道。
方法如下:
-(NSInteger) numberOfNames
{
return [myArray count];
}
-(NSString*) nameAtIndex: (NSInteger) index
{
return [myArray objectAtIndex:index] ;
}
希望这可以帮助!:)