gpt4 book ai didi

ios - 部分中的数组问题(TableView)

转载 作者:行者123 更新时间:2023-11-28 23:10:57 25 4
gpt4 key购买 nike

我有一个问题,我的数组没有设置到我想要的部分。在下面的代码中:

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

只有第二个数组被设置到该部分中,但它在其他 2 个部分中重复它自己并且不使用其余数组设置其他部分。

我有另一件事 - 如果我像第一个和第二个数组一样放入一个数组(假设是第三个)超过 5 行,它会给我错误:由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* -[__NSArrayM objectAtIndex:]:索引 5 超出范围 [0 .. 4]'

我做错了什么??感谢您的帮助!

代码:

(sectionArray 和 dataArray 是我的 .h 文件中的 NSMutableArray 变量)

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
sectionArray = [NSArray arrayWithObjects:@"section1", @"section2", @"section3", nil];

return [sectionArray count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection: (NSInteger)section
{

NSString *sectionHeader = nil;

if(section == 0)
{
sectionHeader = @"אתרים חשובים";
}

if(section == 1)
{
sectionHeader = @"מתעניינים";
}

if(section == 2)
{
sectionHeader = @"טלפונים שימושיים";
}

return sectionHeader;
}

// Returns the number of rows in a given section.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(section == 0)
{
dataArray = [[NSMutableArray alloc] initWithObjects:
@"אתר אורנים",
@"כניסה למערכת ניהול שיעורים",
@"אלפון אנשי סגל",
@"אתר אגודת הסטודנטים",
@"מפת אורנים", nil];
}

if(section == 1)
{
dataArray = [[NSMutableArray alloc] initWithObjects:
@"תנאי קבלה",
@"שאלות נפוצות",
@"הרשמה אונליין",
@"יצירת קשר עם יועץ לימודים",
@"תחבורה ציבורית", nil];
}

if(section == 2)
{
dataArray = [[NSMutableArray alloc] initWithObjects:
@"מרכז המידע וההרשמה",
@"שכר לימוד",
@"שכר לימוד (מספר נוסף)",
@"קופת אורנים",
@"מרכז ההשאלה בספריה", nil];
/*
@"תמיכת הספריה",
@"מעונות",
@"מכלול",
@"רכז בטחון",
@"שער",
@"אגודת הסטודנטים",
@"רדיו אורנים",
@"פקולטות:",
@"מנהל תלמידים",
@"מנהל תלמידים (מספר נוסף)", nil];
*/
}

return [dataArray count];
}

// Returns the cell for a given indexPath.
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
// Create the cell.
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
cell.textLabel.textAlignment = UITextAlignmentRight;

float Rvalue = (1.0 * 000) / 255;
float Gvalue = (1.0 * 139) / 255;
float Bvalue = (1.0 * 69) / 255;
cell.textLabel.textColor = [UIColor colorWithRed:Rvalue green:Gvalue blue:Bvalue alpha:1.0f];

UIImage *cellImage = [UIImage imageNamed:@"oranimCellIco.png"];
cell.imageView.image = cellImage;

return cell;
}

最佳答案

首先,您应该在委托(delegate)方法之外创建和存储数据。在-(void)viewDidLoad;-(id)init;中,其实无所谓。重要的是,您的数据数组(或数组或数组的数组)应该在委托(delegate)调用之前创建,并且在 TableView 调用它的数据委托(delegate)时应该保持一致。

让我们说一些viewController.h

@property(nonatomic, retain)NSArray data;
@property(nonatomic, retain)NSArray sections;

以及对应的viewController.m

-(void)viewDidLoad{
[super viewDidLoad];
self.sections = [[NSArray alloc] initWithObjects:@"אתרים חשובים",@"מתעניינים",@"טלפונים שימושיים",nil];
self.data = [[NSArray alloc]initWithObjects:
[[NSArray alloc] initWithObjects:
@"אתר אורנים",
@"כניסה למערכת ניהול שיעורים",
@"אלפון אנשי סגל",
@"אתר אגודת הסטודנטים",
@"מפת אורנים", nil],
[[NSArray alloc] initWithObjects:
@"תנאי קבלה",
@"שאלות נפוצות",
@"הרשמה אונליין",
@"יצירת קשר עם יועץ לימודים",
@"תחבורה ציבורית", nil],
[[NSArray alloc] initWithObjects:
@"מרכז המידע וההרשמה",
@"שכר לימוד",
@"שכר לימוד (מספר נוסף)",
@"קופת אורנים",
@"מרכז ההשאלה בספריה", nil]nil];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [self.sections count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [self.sections objectAtIndex:section];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSArray* dataArray = [self.data objectAtIndex:indexPath.section];
return [dataArray count];
}

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil){
// Create the cell.
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

NSArray* dataArray = [data objectAtIndex:indexPath.section];
cell.textLabel.text = [dataArray objectAtIndex:indexPath.row];
cell.textLabel.textAlignment = UITextAlignmentRight;

cell.textLabel.textColor = [UIColor colorWithRed:0.0 green:139.0/255.0 blue:69.0/255.0 alpha:1.0];

UIImage *cellImage = [UIImage imageNamed:@"oranimCellIco.png"];
cell.imageView.image = cellImage;

return cell;
}

קצת סדוד לא יפגע אף פעם :)

关于ios - 部分中的数组问题(TableView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com