Three20 – TableView(TTTableViewController)(1)

平时开发的时候,TableView用的最多了,而且也是很麻烦的,所以就先看看TableView在320里面应该怎么弄吧。然后其他的东西就可 以慢慢的理解了,所以说,代码就是最好的文档,虽然有时候会很愤怒的说,怎么这么magic,但是还是最好理解的一种方式,ok,咱们就慢慢的来。

先创建一个项目,如下,就创建一个最简单的项目(用320模板创建不知道为何不能编译通过,好吧,先不管)。

创建完成后,我们就把320加入到我们的项目中,可以看这里

注意,创建项目最好不要有下划线等奇怪的字符,否则那个脚本不能import 320,只能自己手动import了。今天我就弄了1个小时才明白这个问题。。

之前好久没有弄iPhone开发了,后来发现好像现在默认会有一个RootViewController,刚好是默认生成的MVC,嗯,这样默认情 况就比原来更好了,原来还要自己手动创建一个Controller,这样就更方便了。所以,既然如此,我们就搞搞RootViewController。

但是在写Controller之前,我们要改一下我们的AppDelegate。Delegate头文件可以不用改,不过建议去掉无用的 import,然后我们改代码文件,我们可以改成这样。当然,还要记得import <three20/Three20.h>。

#import " _20tableviewAppDelegate.h "
#import
" RootViewController.h "

@implementation _20tableviewAppDelegate

@synthesize window = _window;
@synthesize navigationController
= _navigationController;

- ( void )applicationDidFinishLaunching:(UIApplication * )application {
    
// 定义url映射
    TTNavigator * navigator = [TTNavigator navigator];
    navigator.supportsShakeToReload
= YES;
    navigator.persistenceMode
= TTNavigatorPersistenceModeAll;
    navigator.window
= self.window;
    
    
// [TTStyleSheet setGlobalStyleSheet:[[[StyleSheet alloc] init] autorelease]];
    
    TTURLMap
* map = navigator.URLMap;
    [map from:
@" * " toViewController:[TTWebController class ]];
    [map from:
@" tt://root " toViewController:NSClassFromString( @" RootViewController " )];
    [map from:
@" tt://nib/(loadFromNib:) " toSharedViewController:self];
    [map from:
@" tt://nib/(loadFromNib:)/(withClass:) " toSharedViewController:self];
    [map from:
@" tt://viewController/(loadFromVC:) " toSharedViewController:self];
    [map from:
@" tt://modal/(loadFromNib:) " toModalViewController:self];
    
    
if ( ! [navigator restoreViewControllers]) {
        [navigator openURLAction:[TTURLAction actionWithURLPath:
@" tt://root " ]];
    }
}

- ( void )dealloc {
    TT_RELEASE_SAFELY(_navigationController);
    TT_RELEASE_SAFELY(_window);
    
    [super dealloc];
}

- (UIViewController * )loadFromNib:(NSString * )nibName withClass:className {
    UIViewController
* newController = [[NSClassFromString(className) alloc]
                                       initWithNibName:nibName bundle:nil];
    [newController autorelease];
    
    
return newController;
}

- (UIViewController * )loadFromNib:(NSString * )className {
    
return [self loadFromNib:className withClass:className];
}

- (UIViewController * )loadFromVC:(NSString * )className {
    UIViewController
* newController = [[ NSClassFromString(className) alloc] init];
    [newController autorelease];
    
    
return newController;
}

- (BOOL)application:(UIApplication * )application handleOpenURL:(NSURL * )URL {
    [[TTNavigator navigator] openURLAction:[TTURLAction actionWithURLPath:URL.absoluteString]];
    
return YES;
}
@end

里面比较重要的是定义了URL映射,因为320是根据URL来进行转换的,开发模式和Web很像,以后我会具体说说URL映射这个东西在320里面的实现,现在先写上去就可以了。

里面还有很重要的是重写了loadFromNib之类的方法,以便在后面的代码中可以使用我们自己的方法。

然后,我们既然已经要用320了,所以就先把我们的默认TableView继承自320吧。打开RootViewController,先改头文件,代码如下。

#import < Three20 / Three20.h >

@interface RootViewController : TTTableViewController {
}

@end

然后再改代码文件。咱们把默认代码的都删掉。搞成这样。

#import " RootViewController.h "

@implementation RootViewController

- (id)initWithNibName:(NSString * )nibName bundle:(NSBundle * )bundle {
    
if (self = [super initWithNibName:nibName bundle:bundle]) {
        self.title
= @" 主菜单 " ;
        self.navigationItem.backBarButtonItem
=
        [[[UIBarButtonItem alloc] initWithTitle:
@" 主菜单 "
            style: UIBarButtonItemStyleBordered
            target: nil
            action: nil] autorelease];
    }
    
    
return self;
}

- ( void )createModel {
    self.dataSource
= [TTSectionedDataSource dataSourceWithObjects:
        
@" Google Reader " ,
        [TTTableTextItem itemWithText:
@" 订阅条目 " URL: @" tt://nib/DemoTableViewController " ],
        [TTTableTextItem itemWithText:
@" 我的信息 " URL: @" tt://nib/DemoTableViewController " ],
        nil];
}

@end

上面的代码很简单,主要是定义了一些基本信息,写完之后,我们就可以运行了,看看运行效果。

嗯,很容易,但是用默认的方法我们也可以做的,但是修改默认颜色就比较麻烦了,我们怎么使用320来修改颜色,调试样式呢?很简单,前面我说 了,320其实很像web开发,我们也可以创建类似CSS文件来定义样式。我们可以创建一个名叫StyleSheet的类。然后代码可以编写如下。

头文件,加一些引用。

#import < Three20 / Three20.h >
#import
< Three20Style / TTDefaultStyleSheet.h >
#import
< Three20Style / TTDefaultStyleSheet + DragRefreshHeader.h >

@interface StyleSheet : TTDefaultStyleSheet {

}
@end 

然后我们可以写一下样式文件。

#import " StyleSheet.h "

@implementation StyleSheet

- (UIFont * )font {
    
return [UIFont fontWithName: @" Arial " size: 11 ];
}

- (UIFont * )tableFont {
    
return [UIFont fontWithName: @" Arial " size: 12 ];
}

- (UIFont * )tableHeaderPlainFont {
    
return [UIFont fontWithName: @" Arial " size: 14 ];
}

- (UIFont * )titleFont {
    
return [UIFont fontWithName: @" Arial " size: 18 ];
}

- (UIColor * )tableGroupedBackgroundColor {
    
return RGBCOLOR( 224 , 221 , 203 );
}

- (UIColor * )tableHeaderTextColor {
    
return [UIColor brownColor];
}

- (UIColor * )tableHeaderTintColor {
    
return RGBCOLOR( 224 , 221 , 203 );
}

- (UIColor * )navigationBarTintColor {
    
return RGBCOLOR( 100 , 128 , 108 );
}

@end   

然后,我们在AppDelegate里面添加引用即可,很简单。

> #import “StyleSheet.h”

> 在applicationDidFinishLaunching中加上[TTStyleSheet setGlobalStyleSheet:[[[StyleSheet alloc] init] autorelease]];即可。(如前面代码中的注释)

然后我们运行一下,看看是不是下面的效果。

是很简单吧。然后我们运行程序,嗯,点一下其中的“订阅条目”,嗯?怎么不能动。我们看看代码,代码里是这样写的。

> [TTTableTextItem itemWithText:@"订阅条目" URL:@"tt://nib/DemoTableViewController"]

Three20有一个很好的东西,就是基于URL进行Controller变换的,所以我们都不需要写如何变换View的方法,在这里,我们只要定 义了URL就行了,我们看上面的代码,URL是DemoTableViewController(前面的url规范可以自己规范,写在app delegate里,见上面的代码),但是我们的程序中没有DemoTableViewController,所以没有任何效果。

所以这里我们只要在程序里添加一个DemoTableViewController,然后把这个DemoTableViewController写完即可,然后再运行程序,是不是就可以很简单的跳转过去了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值