我想在特定索引处使用来自数组的对象填充TableView。我想我可以通过循环insertObject
行并将我想要填充TableView的对象(在特定索引处)添加到新数组然后使用新数组填充tableView但最后添加新数组是零。
第一个阵列是这样的布局:电子邮件,名称,密钥代码,电子邮件,名称,密钥代码,电子邮件,名称,密钥代码等......所以我想填充第二个数组只是密钥代码,然后使用密钥代码数组并用它填充表
这是我到目前为止所做的:
·H
@property(nonatomic) NSArray *productList;
@property(nonatomic) NSMutableArray *productKeycodes;
的.m
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
// If You have only one(1) section, return 1, otherwise you must handle sections
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
// Return the number of rows in the section.
return [self.productList count] / 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
self.productKeycodes = [NSMutableArray new];
bool flag = true;
int index = 3;
int arraySize = [self.productList count];
int numberOfKeycodes = [self.productList count] / 3;
while (flag) {
self.productKeycodes = [self.productList objectAtIndex: index];
//[self.productKeycodes insertObject: self.productList atIndex: index];
if (arraySize > numberOfKeycodes) {
index = index + 3;
arraySize = arraySize - 3;
}else{
flag = false;
}
}
cell.textLabel.text = [NSString stringWithFormat:[self.productKeycodes objectAtIndex: indexPath.row]];
return cell;
}
循环完成后的断点数据:
self ProductListViewController * 0x7a2831c0
UIViewController UIViewController
_productListTableView UITableView * 0x7b30c400
_productList __NSArrayM * @"49 elements" 0x78ebe380
_productKeycodes NSMutableArray * nil 0x00000000
numberOfKeycodes int 16
index int 26
arraySize int 13
flag bool true
此处出现signal SIGABRT
错误:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
//The line below
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));//Here!
//The line above
}
}
是我的逻辑错误和/或有没有更好的方法来做到这一点?谢谢!
答案 0 :(得分:0)
你的逻辑错了。
如果要在表格视图中添加内容,则需要执行以下操作:
productList
。 self.tableView.relaodData()
这就是您需要做的就是将数据插入UITableView
答案 1 :(得分:0)
将tableView:cellForRowAtIndexPath:
中的所有代码替换为:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text = self.productList[indexPath.row * 3 + 2];
return cell;
}
//
答案 2 :(得分:0)
有更好的方法可以做到这一点
为什么要将计数除以3并混淆索引和标记?
如果您有充分理由可以,但填充tableview
的代码不应属于cellForRowAtIndexPath
。
您尝试实现的目标尚不清楚,但正确的方法是更新数据源并重新加载tableView
。