0

这是一个令人困惑的问题,但我会尽力描述它。

我想要的是一个设定大小的框,在该框内,顶部会添加一行文本。随着应用程序的继续,更多行将添加到最后一行下方。当文本到达框的底部时,它不会显示,直到您向下滚动文本列表。换句话说,我希望所有文本行都包含在框中。

另外,我需要在单击某行文本时弹出一条消息,

实现这一目标的最佳方法是什么?

提前致谢!

4

1 回答 1

1

当我在我的 Cocos2d iPhone 应用程序中执行此操作时,我使用了NSTableView.

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableView_Class/Reference/Reference.html

在 Cocos2d 中使用 Cocoa 接口类需要弄清楚一些事情,但这是值得的。如果您想查看结果,我在 Crystal Shuffle 中使用了这些。

这些项目可以响应触摸事件,并且您可以在收到这些事件时弹出窗口。我也会为此使用 Cocoa 接口类。就我而言,我使用了 NSAlert 类:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSAlert_Class/Reference/Reference.html

我使用 UITableView 的示例代码,使用 Cocos2d 版本 0.99.3:

@interface MyMenu : CCLayer <UITableViewDelegate, UITableViewDataSource>
{
    UITableView* m_myTableView;
}

@implementation MyMenu
-(void) onEnter
{
    m_myTableView = [[UITableView alloc] initWithFrame:CGRectMake(10, 10, 250, 120) style:UITableViewStylePlain];
    m_myTableView.delegate = self;
    m_myTableView.dataSource = self;
    m_myTableView.backgroundColor = [UIColor clearColor];
    m_myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    m_myTableView.rowHeight = 27;
    m_myTableView.allowsSelection = NO;
}

-(void)onEnterTransitionDidFinish
{
    [super onEnterTransitionDidFinish];

    [[[CCDirector sharedDirector] openGLView] addSubview:m_myTableView];
    [m_myTableView release];
}

在关闭层之前调用:

        NSArray *subviews = [[[CCDirector sharedDirector] openGLView] subviews];
        for (id sv in subviews)
        {
            if(((UIView*)sv).tag == e_myTableTag)
            {
                [((UITableView*)sv) removeFromSuperview];
            }
        }

您还需要相关的重载,您可以在 Apple 文档中查找:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
于 2012-05-16T14:22:48.257 回答