Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableView是否可以调整大小?我可以指定不同的帧吗?_Iphone_Objective C_Ios - Fatal编程技术网

Iphone UITableView是否可以调整大小?我可以指定不同的帧吗?

Iphone UITableView是否可以调整大小?我可以指定不同的帧吗?,iphone,objective-c,ios,Iphone,Objective C,Ios,UITableView是否可以调整大小?我可以指定不同的帧吗 我正在UITableViewController中尝试这一行,但它不起作用(在iPhone上): 感谢您不要使用UITableViewController,因为在UITableViewController中,self.view==self.tableView 尝试使用UIViewController,根据需要实现UITableViewDataSource和UITableViewDelegate协议。是的,UITableView可调整大

UITableView是否可以调整大小?我可以指定不同的帧吗

我正在UITableViewController中尝试这一行,但它不起作用(在iPhone上):


感谢您不要使用UITableViewController,因为在UITableViewController中,
self.view==self.tableView


尝试使用UIViewController,根据需要实现UITableViewDataSource和UITableViewDelegate协议。

是的,UITableView可调整大小,但在使用UITableViewController时不可调整大小

尝试将UITableView添加到普通UIViewController,并使其实现所需的委托方法。通过这种方式,您可以在自定义UITableView时获得更大的灵活性

阅读以下两个链接


要详细介绍伯克的答案:

  • 使用XCode的模板创建常规视图控制器
  • 添加
  • 添加
    @property IBOutlet UITableView
    ,将
    UITableView
    对象添加到XIB并链接它们
  • UITableView
    的委托和数据源设置为类
  • 添加以下方法:
  • // #pragma标记-UITableViewDataSource

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 1;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {  
        NSString *cellIdentifier = @"ServiceCell";
        UITableViewCell *cell = (UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] init];
        }
        return [cell autorelease];
    }
    

    结果是一个具有可调整大小的tableView的UITableViewController。

    如果使用UITableViewController,则无法调整self.tableView.frame或self.view.frame的大小,但您可以做的是

    您可以使用以下方法设置上边距:

    UIEdgeInsets inset = UIEdgeInsetsMake(50, 0, 0, 0);
    self.tableView.contentInset = inset;
    
    这不是一个好的做法,只是万一你想在上面有更多的空间,你可以使用它


    不应使用UITableViewController,只需使用UIViewController并以编程方式创建UITableview即可

    您可以通过以下方法在UITableViewController内调整tableView的大小

    - (void)viewWillAppear:(BOOL)animated
    {
        [self.tableView setFrame:CGRectMake(x, y, w, h)];
    }
    
    它也适用于VIEWDID

    试试这个:

    - (void)viewDidAppear:(BOOL)animated
    {   
        // Set your tableView frame in UITableViewController
        [self.tableView setFrame:CGRectMake(0, 320, 320, 480)];
        // To remove the black color space up of the table view and in this case I set it as white
        [[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor whiteColor]];
    }
    

    要在使用UITableViewController时调整UITableView的大小,只需覆盖ViewWillLayoutSubview,如下所示:

    - (void)viewWillLayoutSubviews {
        [super viewWillLayoutSubviews];
    
        CGRect frame = self.view.superview.bounds;
        frame.size.width -= 54.0;
        self.tableView.frame = frame;
    }
    

    还包括self.view.frame=CGRectMake(0,0,300,200);不起作用。确实是:-(void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];CGRect frame=self.view.superview.bounds;frame.size.width-=54.0;self.tableView.frame=frame;}是否有办法将UITableViewController转换为UIViewCOntroller,或者我必须完全复制所有代码?!?(我没有使用nib文件)您无法转换它,但是如果您创建了一个新的UIViewController(带或不带nib),您可以从UITableViewController复制粘贴所有UITableViewDelegate和UITableViewDatasource方法。注意,按照上面的步骤,您将新控制器设置为内部tableView的委托和数据源,因此它调用相同的方法。没有NIB的区别在于,您必须执行tableView=[[[UITableView alloc]initWithFrame:CGRectZero样式:UITableView样式分组]自动释放];tableView.delegate=self;dataSource=self;在viewDidLoad方法中,我刚刚转换了它。添加几行。没有NIB很简单。当我这样做时,用户可以看到正在发生的变化。看起来很紧张
    - (void)viewWillLayoutSubviews {
        [super viewWillLayoutSubviews];
    
        CGRect frame = self.view.superview.bounds;
        frame.size.width -= 54.0;
        self.tableView.frame = frame;
    }