如何在 UIViewController 中更改 TableView 的属性

Posted

技术标签:

【中文标题】如何在 UIViewController 中更改 TableView 的属性【英文标题】:How to change properties of a TableView in a UIViewController 【发布时间】:2012-03-06 14:26:36 【问题描述】:

我是 ios 开发的初学者,需要一些帮助:

我有一个带有 2 个嵌套 TableView 的 UIViewController。 (类似here的实现)

.h 文件

#import <UIKit/UIKit.h>

@interface TabAboutViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 


    @property (nonatomic, strong) NSArray *navigationList;

@end

.m 文件

#import "TabAboutViewController.h"

@interface TabAboutViewController ()

@end

@implementation TabAboutViewController

#pragma mark -
#pragma mark Synthesize

@synthesize navigationList;
@synthesize informationTableView;

#pragma mark -
#pragma mark View Load

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    navigationList = [NSArray arrayWithObjects:@"Was leistet die App?",@"Wie wird gemessen?",@"Wie wird ausgewertet?",@"Was sind die Vorteile?",nil];


#pragma mark -
#pragma mark View UnLoad

- (void)viewDidUnload

    [super viewDidUnload];
    // Release any retained subviews of the main view.



#pragma mark -
#pragma mark View Rotates

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    return YES;


#pragma mark -
#pragma mark Table Management

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    // Return the number of sections.
    return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    // Return the number of rows in the section.
    return [self.navigationList count];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"aboutCell"];
    NSString *cellText = [self.navigationList objectAtIndex:indexPath.row];
    cell.textLabel.text = cellText;

    return cell;


@end

现在我想为 UIViewController 中的一个 TableViews 设置背景颜色,但我不知道如何以及在哪里进行。我不想在情节提要中更改它。

【问题讨论】:

【参考方案1】:

你可以在-viewDidLoad

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.myTableView.backgroundColor = [UIColor red];
    // ...

如果您还没有这样做,请不要忘记在 .h 文件中的表视图中添加 IBOutlet 并从 Interface Builder 链接到它:

@property (weak, nonatomic) IBOutlet UITableView *myTableView;

如果你使用标签来识别你的视图,你可以这样做:

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UITableView *myTableView = [self.view viewWithTag:1]; // Or what ever tag you associate with the table view
    myTableView.backgroundColor = [UIColor red];
    // ...

【讨论】:

嗯,我测试了这两种方法...但是背景颜色没有改变 您确定将表格视图链接到 IBOutlet 还是设置了正确的标记值?当您尝试访问它时,您确定myTableView 不是nil 吗?尝试在viewDidLoad 末尾添加NSLog(@"myTableView: %@", myTableView); 出于测试目的,我删除了第二个表,然后将 (@property (weak, nonatomic) IBOutlet UITableView *mytableView;) 添加到 .h 文件, (@synthesize mytableView;) 添加到 .m文件和 (self.mytableView.backgroundColor = [UIColor blackColor];) 到 viewDidLoad 方法... NSLog(@"myTableView: %@", myTableView);回馈“null” 好的,上面的答案找到了我的问题:我忘了在 interfaceBuilder 中连接插座...正如我所说 - 我对 ios dev 完全陌生;)【参考方案2】:
- (void)viewDidLoad

    self.tableview.backgroundcolor = [UIColor blueColor]; // change color here..


    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    navigationList = [NSArray arrayWithObjects:@"Was leistet die App?",@"Wie wird gemessen?",@"Wie wird ausgewertet?",@"Was sind die Vorteile?",nil];

【讨论】:

【参考方案3】:

首先,您可以在 nib 文件中定义背景颜色!

但是,如果您想基于代码进行操作,请确保已将界面生成器中的表格视图连接到 .h 文件中相应的 IBOutlets。然后,您可以从您想要的任何位置(viewDidLoad 或更高版本)访问代码中的这些表视图。

【讨论】:

omg,谢谢 - 我忘了在 interfacebuilder 中连接插座;)

以上是关于如何在 UIViewController 中更改 TableView 的属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在将 UIViewController 呈现给自定义时更改默认转换

如何根据 UINavigationController 中显示的 UIViewController 更改 UINavigationBar

uiviewcontroller中的设备方向更改[重复]

推送 UIViewController 时如何更改 TabBarItens?

如何使用 MainStoryBoard 加载和更改 UIViewController [IOS]

如何从另一个 UIViewController 更改分段控件标题(设置)