以编程方式更改nstableview的位置

时间:2013-06-28 10:05:06

标签: objective-c macos cocoa view tableview

我的IB中有一个tableview。我正在尝试使用以下代码更改awakefromnib中IB中的表视图的位置。

[[[_menuTableView superview] superview] setFrame:NSMakeRect(0, 0, 234, 1000)];
[[_menuTableView superview] setFrame:NSMakeRect(0, 0, 234, 1000)];

[_menuTableView setFrame:NSMakeRect(0, 0, 234, 1000)];

我已经写了这三行,因为我必须改变所有视图的位置(Scrollview,clipview和tableview。)

问题是即使在执行上述行之后,tableview位置也没有改变。 怎么做到这一点?

代码

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize searchField;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application

}

-(id)init
{
    self = [super init];
    if (nil!= self)
    {
        _arrayContents= [[NSMutableArray alloc] initWithObjects:@"a",@"as",@"sd",@"dfg",@"fh",@"sdf",@"ret",@"sdf",@"dsfxc",@"awert",@"xsdfcvg", nil];
        _searchedArrayContents = [NSMutableArray arrayWithCapacity:[_arrayContents count]];

        _menuArray = [[NSMutableArray alloc] initWithObjects:@"123",@"1231234",@"235435",@"5345345", nil];
    }
    return  self;
}

-(void)awakeFromNib
{
//    [_menuTableView setHidden:YES];
//    [[[_menuTableView superview] superview] setHidden:YES];

    [[[_menuTableView superview] superview] setFrame:NSMakeRect(100, 0, 234, 1000)];
    [[_menuTableView superview] setFrame:NSMakeRect(0, 0, 234, 1000)];

    [_menuTableView setFrame:NSMakeRect(0, 0, 234, 1000)];
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    if (aTableView==_menuTableView)
    {
        return  [_menuArray count];
    }

    if ([[searchField stringValue] length]>0 || [[_tokenField stringValue] length]>0 || [[_textField stringValue] length]>0)
    { 
        return [_searchedArrayContents count];
    }
    if (aTableView==_tableView)
    {
        return [_arrayContents count];
    }
    return  0;
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn         *)aTableColumn row:(NSInteger)rowIndex
{
    if (aTableView==_menuTableView)
    {
        return  [_menuArray objectAtIndex:rowIndex];
    }

    if ([[searchField stringValue] length]>0 || [[_tokenField stringValue] length]>0)
    {
        return [_searchedArrayContents objectAtIndex:rowIndex];
    }

    if (aTableView==_tableView)
    {
        return [_arrayContents objectAtIndex:rowIndex] ;
    }

    return nil;
}

0 个答案:

没有答案