看你上面的UI,我给的建议是不使用UITableViewController . 而是使用UIViewController + UITableView 实现,在stroyboard中拖放一个UIViewController,再拖放一个UItableView放到UIViewController的view上,再关联上uitableview 的delegate, 及datasource
而SegmetControl放到NavigationBar 上显示比较合适,显然SegmentControl切换时显示的列表UI不同,你可以构建两个uitableview .根据segmentControl的切换来加载显示。
而SegmetControl放到NavigationBar 上显示比较合适,显然SegmentControl切换时显示的列表UI不同,你可以构建两个uitableview .根据segmentControl的切换来加载显示。
解决方案 »
- clash of clans 用手指拖动房子,改变房子的位置,碰到别的房子会变红,可以放置的地方放置下来会变绿,想实现这个效果,没思路,怎么办
- 不用interface builder 怎样将事件跟按钮关联起来?
- iphone开发&前端技术分享沙龙
- 如何动态添加一个UITableViewCell到UITableView
- UITextField input 的问题
- ios开发闪退,注销后重新登录闪退,连续动画
- iOS 代理 传值
- ios客户端向服务器端发送数据以及接收数据要如何实现?
- iOS 如何在app运行时,给设备安装provisioning profiles文件
- iOS阅读器的开发
- webview 中多个点击事件处理
- array删除报错
首先新建一个UIViewController(记得写上delegate和datasource),实例化一个UIView(暂且叫segmentView)和一个segmentControl、两个UITableView(tableViewA和tableViewB)。将segmentControl放在segmentView上,再将segmentView添加到self.view上,即[self.view addSubview: segmentView];这样segmentControl就添加到本页面的view上了,并给segmentControl添加点击方法。具体如下: segmentControl = [[UISegmentedControl alloc] initWithItems:@[@"左边",@"右边"]];
segmentControl.frame = CGRectMake(100, 10, 120, 30);
UIView *segmentView = [[UIView alloc] initWithFrame:CGRectMake(0, 62, 320, 50)];
segmentView.backgroundColor = [UIColor whiteColor];
[segmentView addSubview: segmentControl];
[self.view addSubview: segmentView];
[segmentControl addTarget: self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 再将tableViewA和tableViewB添加到本页面视图上,如下:
[self.view addSubview: tableViewA];
[self.view addSubview: tableViewB];
-(void)segmentAction:(id)sender{
switch ([sender selectedSegmentIndex]) {
case 0:
tableViewB.hidden = YES;
tableViewA.hidden = NO;
[tableViewA reloadData];
break;
case 1:
tableViewB.hidden = NO;
tableViewA.hidden = YES;
[tableViewB reloadData];
break;
default:
NSLog(@"segmentActionDefault");
break;
}
}然后就是cell上数据的填充了
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
switch (segmentControl.selectedSegmentIndex){
case 0:
{
return 1;
}
break;
case 1:
{
return 2;
}
break;
default:
return 1;
break;
}
}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 6;
}//不同的tableview上添加不同的控件
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([tableView isEqual:fundaInfoView]) {
static NSString *identifier = @"FundaCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
if (indexPath.row == 0) {
UILabel *bkhrLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 12, 75, 20)];
bkhrLabel.text = @"第一行:";
[cell.contentView addSubview:bkhrLabel];
bkhr = [[UITextField alloc] initWithFrame:CGRectMake(92, 7, 210, 30)];
[cell.contentView addSubview:bkhr];
}
if (indexPath.row == 1) {
UILabel *jobLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 12, 75, 20)];
jobLabel.text = @"第二行:";
jobLabel.textAlignment = NSTextAlignmentRight;
[cell.contentView addSubview:jobLabel];
job = [[UITextField alloc] initWithFrame:CGRectMake(92, 7, 210, 30)];
[cell.contentView addSubview:job];
}
return cell;
}else if ([tableView isEqual:leaderInstrView]){
static NSString *identifier = @"LeaderCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
}
psContent = [[UITextField alloc] initWithFrame:CGRectMake(10,3, 200, 18)];
[cell.contentView addSubview:psContent];
psName = [[UITextField alloc] initWithFrame:CGRectMake(10, 23, 304, 18)];
[cell.contentView addSubview:psName];
return cell;
}
return nil;
}//根据indexPath.row 设置不同行的行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView isEqual:tableViewA)
{
if (indexPath.row <= 4) {
return 44;
}
if (indexPath.row == 5 || indexPath.row == 6) {
return 120;
}
}
return 44;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 6;
}应该是return 2;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView isEqual:tableViewA)
{
if (indexPath.row <= 4) {
return 44;
}
if (indexPath.row == 5 || indexPath.row == 6) {
return 120;
}
}
return 44;
}
改为
//根据indexPath.row 设置不同行的行高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([tableView isEqual:tableViewA)
{
return 44;
}
两行高度一样,不需要判断了