我正在尝试在UITableView
内设置UIViewController
。我正在使用故事板。但是在模拟器上运行时,tableview不会显示任何内容。以下是我在Xcode中尝试的内容:
1)在UIView
上拖动表格视图。
2)连接它的插座(dataSource
和delegate
)。
3)我得到服务器的响应,如:
[{"email_id":"adas@faga.gs","id":66,"mobile_no":"1236547895","name":"asad","relation":"dsfs"},{"email_id":"raj@ghj.com","id":67,"mobile_no":"5632145412","name":"raj","relation":"xyz"}]
4)现在我想做什么:
在我要显示的第一个单元格中,
name:asad mobile:1236547895 email:adas@faga.gs relation:dsfs
在第二个小区,
name:raj mobile:5632145412 email:raj@ghj.com relation:xyz
但我不知道如何做到这一点。任何人都可以解决我的问题。帮助将是可观的。
我喜欢以下方式,但它不起作用。
a)使用Objective-C
类模板向项目添加新文件。将其命名为EmergencyContactCell
并将其命名为UITableViewCell
的子类。
b)然后在 EmergencyContactCell.h
@interface EmergencyContactCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *name;
@property (nonatomic, weak) IBOutlet UILabel *email;
@property (nonatomic, weak) IBOutlet UILabel *mobile;
@property (nonatomic, weak) IBOutlet UILabel *relation;
c)然后MainStoryboard.storyboard
,选择prototypecell并在Identity Inspector中将其类更改为EmergencyContactCell
d)然后连接所有插座
e)我正在使用AFNetworking从服务器接收响应,当我得到响应时,之后我喜欢以下方式:
NSArray *ResponseArray = [NSJSONSerialization JSONObjectWithData: responseObject options: kNilOptions error: nil];
if (ResponseArray.count >0)
{
menuItems = [ResponseArray mutableCopy];
[yourTableviewname reloadData];
}
f)并将其显示在单元格上,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [menuItems count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EmergencyContactCell";
//static NSString *simpleTableIdentifier = @"cell";
EmergencyContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
// NSDictionary *content = [menuItems objectAtIndex:indexPath.row];
// cell.textLabel.text = [NSString stringWithFormat:@"Name:%@, Mobile:%@, Email:%@, Relation:%@",content[@"name"],content[@"mobile_no"],content[@"email_id"],content[@"relation"]];
//
return cell;
}
我终于得不到该做什么了?
答案 0 :(得分:1)
<强>步骤1 强>
不需要这个
NSArray *ResponseArray = [NSJSONSerialization JSONObjectWithData: responseObject options: kNilOptions error: nil];
NSMutableArray *finalArray = [NSMutableArray array];
for (NSDictionary *temp in ResponseArray) {
[finalArray addObject:temp[@"name"]];
}
NSLog(@"%@",finalArray);
if(finalArray != nil && finalArray.count > 0){
menuItems=[NSArray arrayWithArray:finalArray];
NSLog(@"menu items: %@",menuItems);
}
else{
NSLog(@"zero values from server");
}
只需
NSArray *ResponseArray = [NSJSONSerialization JSONObjectWithData: responseObject options: kNilOptions error: nil];
if (ResponseArray.count >0)
{
menuItems = [ResponseArray mutableCopy];
[yourTableviewname reloadData];
}
<强>步骤-2 强>
您的答案继续
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSDictionary *content = [menuItems objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"Name:%@, Mobile:%@, Email:%@, Relation:%@",content[@"name"],content[@"mobile_no"],content[@"email_id"],content[@"relation"]];
return cell;
}
更新了答案
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"EmergencyContactCell";
EmergencyContactCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *content = [menuItems objectAtIndex:indexPath.row];
cell.name.text = [NSString StringWithFormat:@"Name:%@",content[@"name"]];
cell.email.text = [NSString StringWithFormat:@"email:%@",content[@"email"]];
cell.mobile.text = [NSString StringWithFormat:@"mobile:%@",content[@"mobile"]];
cell.relation.text = [NSString StringWithFormat:@"relation:%@",content[@"relation"]];
return cell;
}
答案 1 :(得分:1)
你需要做两件事
获得响应后将其设置为一个NSArray。声明NSArray
全球性的。你的代码应该像是
public function index()
{
$users = User::search()->orderBy('name')->paginate(20);
return view('home', compact('users'));
}
从服务器获得。然后拨打NSArray *arrayPersonalInfo = responseObject; // responseObject is response
现在将表格视图方法更新为
[tableView reloadData];
如果需要,添加其他表视图方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return arrayPersonalInfo.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *simpleTableIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
NSDictionary *dictionaryMenu = [arrayPersonalInfo objectAtIndex:indexPath.row]; // It will save dictionary object of index
cell.textLabel.text = [NSString stringWithFormat:@"Name:%@ Mobile:%@ Email:%@ Relation:%@",[dictionaryMenu valueForKey:@"name"],[dictionaryMenu valueForKey:@"mobile_no"],[dictionaryMenu valueForKey:@"email_id"],[dictionaryMenu valueForKey:@"relation"]];
cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
return cell;
}
和heightForRowAtIndexPath
答案 2 :(得分:0)
如果您更喜欢使用故事板,您实际上可以在原型单元格中添加标签,确保正确设置原型的cellIdentifier以在代码中使用它。然后为您的标签设置唯一标签。从您的代码中,您可以从单元格的contentView调用viewWithTag来获取标签并编辑它的文本属性。