@property(nullable, nonatomic, strong) NSArray<NSDictionary *> *itemList;
self.itemList = ({
NSMutableArray<NSDictionary *> *array = @[].mutableCopy;
{
NSDictionary *item = @{ @"title" : @"定位示例",
@"class" : [SJMapKitLocatingExampleViewController class] };
[array addObject:item];
}
{
NSDictionary *item = @{ @"title" : @"显示位置",
@"class" : [SJMapKitAnnotationViewController class] };
[array addObject:item];
}
array;
});
<pre name="code" class="objc"> self.tableView = ({
// 1. 创建对象
UITableView *view = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
view.delegate = self;
view.dataSource = self;
// 2. 添加到父视图
[self.view addSubview:view];
// 3. 布局
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(view.superview);
}];
// 4.
view;
});
#pragma mark - UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.itemList.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *item = nil;
if (indexPath.row < self.itemList.count) {
item = [self.itemList objectAtIndex:indexPath.row];
}
NSString *title = [item objectForKey:@"title"];
NSString *identifier = NSStringFromClass([UITableViewCell class]);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text = title;
cell.textLabel.adjustsFontSizeToFitWidth = YES;
return cell;
}
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *item = nil;
if (indexPath.row < self.itemList.count) {
item = [self.itemList objectAtIndex:indexPath.row];
}
Class clazz = [item objectForKey:@"class"];
UIViewController *vc = [[clazz alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}