SlideShare a Scribd company logo
1 of 33
Giao diện Master – Detail
Tab Bar
trong iOS
cuong@techmaster.vn

http://techmaster.vn
Master – Detail và các biến thể
http://techmaster.vn
Giao diện master - detail
•  Đi	
  từ	
  tổng	
  quan	
  đến	
  chi	
  tiết	
  
•  Màn	
  hình	
  tổng	
  quan	
  có	
  thể	
  là	
  table	
  view,	
  collection	
  
view,	
  có	
  chức	
  năng	
  tìm	
  kiếm	
  hoặc	
  dạng	
  phi	
  chuẩn	
  
•  Màn	
  hình	
  chi	
  tiết	
  có	
  nút	
  Back	
  hoặc	
  Close	
  để	
  trở	
  về	
  
màn	
  hình	
  chi	
  tiết	
  
•  Master	
  -­‐>	
  Detail	
  -­‐>	
  More	
  Detail	
  …	
  nhưng	
  đừng	
  quá	
  sâu	
  

http://techmaster.vn
Giao	
  diện	
  Master	
  –	
  Detail	
  	
  
sử	
  dụng	
  Naviga9onBar	
  chuẩn	
  
của	
  iOS	
  UIKit	
  

Chạm	
  vào	
  từng	
  dòng	
  
table	
  view	
  để	
  xem	
  chi	
  
9ết	
  	
  

http://techmaster.vn
Master – Detail (500px)
Nút	
  back	
  bu*on	
  và	
  
naviga1on	
  bar	
  điển	
  hình	
  

Tổng	
  quan	
  

Chi	
  9ết	
  

http://techmaster.vn
Master – Detail (Apple Weather)

Chạm	
  vào	
  thành	
  phố	
  
để	
  xem	
  chi	
  9ết	
  

http://techmaster.vn
Nút	
  back	
  thay	
  
bằng	
  nút	
  close	
  

Ứng	
  dụng	
  Feedly,	
  master	
  –	
  detail	
  nhưng	
  không	
  dùng	
  Naviga9on	
  Bar	
  chuẩn,	
  màn	
  hình	
  detail	
  
Được	
  present	
  modally	
  
http://techmaster.vn
Đừng máy móc !

Master:	
  danh	
  sách	
  các	
  mã	
  cổ	
  phiếu	
  

Master	
  –	
  Detail	
  trong	
  còn	
  một	
  màn	
  hình	
  	
  

Detail:	
  biểu	
  đồ	
  của	
  mã	
  cổ	
  phiếu	
  được	
  chọn	
  

http://techmaster.vn
Detail:	
  bản	
  đồ	
  vị	
  trí	
  thiết	
  bị	
  lại	
  ở	
  trên	
  

Master:	
  danh	
  sách	
  thiết	
  bị	
  ở	
  dưới	
  

http://techmaster.vn
Master-­‐Detail	
  4	
  cấp	
  di	
  chuyển	
  nhưng	
  người	
  dùng	
  vẫn	
  dễ	
  dùng.	
  Vì	
  sao?	
  
http://techmaster.vn
Tin	
  quan	
  trọng	
  (featured	
  news)	
  	
  

Quảng	
  cáo	
  ké	
  vào	
  	
  

Các	
  mục	
  trong	
  master	
  không	
  nhất	
  
thiết	
  lúc	
  nào	
  cũng	
  phải	
  đều	
  nhau	
  	
  

Tin	
  bình	
  thường	
  
http://techmaster.vn
Không	
  phải	
  lúc	
  nào	
  cũng	
  dùng	
  TableView	
  hoặc	
  Collec9onView	
  
Ứng	
  dụng	
  Paper	
  FaceBook,	
  các	
  chuyên	
  mục	
  9n	
  di	
  chuyển	
  bằng	
  
UIScrollView	
  cùng	
  Pager	
  Control	
  (dãy	
  các	
  chấm)	
  

Paper	
  
Facebook	
  
Headline	
  

Tech	
  

Fashion	
  

News	
  1	
  

News	
  1	
  

News	
  1	
  

News	
  2	
  

News	
  2	
  

News	
  2	
  

News	
  3	
  

News	
  3	
  

News	
  3	
  
http://techmaster.vn
Tab Bar và các biến thể
http://techmaster.vn
Chức	
  năng	
  các	
  tab	
  tương	
  đương	
  

Tab	
  giữa	
  quan	
  trọng	
  hơn,	
  nên	
  to	
  dễ	
  bấm	
  hơn	
  
http://techmaster.vn
Tab	
  Bar	
  dùng	
  để	
  chia	
  vùng,	
  phân	
  tách	
  các	
  chức	
  năng	
  không	
  liên	
  hệ	
  với	
  nhau	
  
Tab	
  Bar	
  chứa	
  Naviga9on	
  Bar	
  mà	
  không	
  ngược	
  lại	
  	
  
http://techmaster.vn
Facebook	
  no9fica9on	
  

No9fica9on	
  	
  (Badget	
  trong	
  tab	
  bar	
  item)	
  gây	
  sự	
  
chú	
  ý	
  của	
  người	
  dùng	
  rất	
  mạnh	
  

http://techmaster.vn
Chức	
  năng	
  chính	
  to	
  dễ	
  bấm	
  

Ấn	
  vào	
  Rotate	
  hiện	
  thêm	
  sub	
  
menu	
  

Sub	
  menu	
  có	
  thể	
  trượt	
  ngang	
  	
  
http://techmaster.vn
Ứng	
  dụng	
  Documents	
  

Customized	
  Tab	
  Bar	
  kết	
  
hợp	
  cả	
  sliding	
  menu	
  

http://techmaster.vn
Khi	
  ứng	
  dụng	
  có	
  quá	
  nhiều	
  
chức	
  năng,	
  không	
  thể	
  nhét	
  
vừa	
  vào	
  Tab	
  bar	
  hãy	
  sử	
  dụng	
  
Sliding	
  Menu	
  ở	
  bên	
  trái.	
  Ứng	
  
dụng	
  Trulia	
  
	
  

Sliding	
  Menu	
  bên	
  phải	
  là	
  
thông	
  9n	
  bổ	
  trợ	
  ít	
  quan	
  
trọng	
  hơn	
  so	
  với	
  bên	
  trái.	
  
Ứng	
  dụng	
  Facebook,	
  danh	
  
sách	
  Friend	
  

http://techmaster.vn
Trulia	
  

Pinterest	
  

Nếu	
  cần	
  thêm	
  lựa	
  chọn	
  Sub	
  Tab	
  
Không	
  nhất	
  thiết	
  dùng	
  TableView	
  

http://techmaster.vn
Thích chưa? Giờ code nhé !
http://techmaster.vn
Sử	
  dụng	
  StoryBoard	
  thường	
  để	
  tạo	
  prototype	
  ứng	
  dụng	
  
cho	
  khách	
  hàng	
  xem	
  nhanh,	
  code	
  camp…	
  
Không	
  nên	
  dùng	
  cho	
  ứng	
  dụng	
  phức	
  tạp	
  

http://techmaster.vn
Để	
  nhồi	
  một	
  ViewController	
  vào	
  trong	
  
Naviga9on	
  Controller	
  hoặc	
  Tab	
  Bar	
  
Controller	
  
Hãy	
  dùng	
  Editor	
  >	
  Embed	
  In	
  >	
  …	
  
	
  

http://techmaster.vn
Các quan hệ segue
•  Push:	
  master	
  -­‐>	
  detail	
  
•  Modal:	
  A	
  presents	
  B	
  modally	
  
•  Custom:	
  tự	
  viết	
  custom	
  segue	
  
•  Root	
  View:	
  Một	
  Navigation	
  Controller	
  luôn	
  

phải	
  chưa	
  bên	
  trong	
  1	
  Root	
  View	
  Controller	
  
http://techmaster.vn
Cách mà Techmaster hay làm
•  Tạo	
  giao	
  diện	
  bằng	
  code	
  
•  Khi	
  nào	
  thực	
  sự	
  cần	
  mới	
  dùng	
  XIB	
  hoặc	
  
StoryBoard	
  
Code	
  để	
  load	
  
ViewController	
  
từ	
  StoryBoard	
  

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Hack"
bundle:nil];
!
!
DrinkVC *drinkVC = [storyBoard
instantiateViewControllerWithIdentifier:@"DrinkVC"];	
  

http://techmaster.vn
Tạo giao diện
Một	
  TabBarController	
  chứa	
  3	
  
screen:	
  	
  
•  Coffee	
  menu:	
  Nav	
  chứa	
  Single	
  VC	
  
•  Drink	
  Menu:	
  Nav	
  chứa	
  TableView	
  
•  Map:	
  Single	
  VC	
  chứa	
  MapKit	
  

http://techmaster.vn
- (BOOL)application:(UIApplication *)application !
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions!
{!
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];!
!
MainVC *mainVC = [[MainVC alloc] initWithNibName:@"MainVC" bundle:nil];!
UINavigationController *coffeeNav = [[UINavigationController alloc] !
initWithRootViewController:mainVC];!
!
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Hack" bundle:nil];!
DrinkVC *drinkVC = [storyBoard instantiateViewControllerWithIdentifier:@"DrinkVC"
!
UINavigationController *drinkNav = [[UINavigationController alloc] !
initWithRootViewController:drinkVC];!
!
MapVC *mapVC = [[MapVC alloc] initWithNibName:@"MapVC" bundle:nil];!
!
UITabBarController *tabBarController = [UITabBarController new];!
tabBarController.viewControllers = @[coffeeNav, drinkNav, mapVC];!
self.window.rootViewController = tabBarController;!
!
[self.window makeKeyAndVisible];!
return YES;!
http://techmaster.vn
}	
  
UITabBarItem

coffeeNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Coffee" !
image:[UIImage imageNamed:@"coffee"] !
selectedImage:[UIImage imageNamed:@"coffeeSelected"]];!
!
coffeeNav.tabBarItem.badgeValue = @"3";	
  
http://techmaster.vn
Các kỹ thuật quan trọng
•  Thay	
  đổi	
  giao	
  diện	
  Navigation	
  Bar	
  và	
  Tab	
  Bar	
  
•  Truyền	
  dữ	
  liệu	
  qua	
  lại	
  các	
  ViewControllers	
  
–  Singleton:	
  dữ	
  liệu	
  dùng	
  chung	
  và	
  duy	
  nhất,	
  vd:	
  Setting	
  
–  Delegate:	
  ViewController	
  cần	
  adopt	
  Protocol	
  
–  Block:	
  cách	
  này	
  hay	
  hơn	
  Delegate	
  
–  Local	
  Notification	
  –	
  Observer:	
  dùng	
  để	
  bắt	
  sự	
  kiện	
  khi	
  dữ	
  
liệu	
  thay	
  đổi	
  
http://techmaster.vn
http://techmaster.vn
Thay đổi background của TabBar
- (void)customizeInterface!
{!
UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar.png"];!
[[UITabBar appearance] setBackgroundImage:tabBarBackground];!
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage
imageNamed:@"selection-tab.png"]];!
UIImage *background = [UIImage imageNamed:@"background.jpg"];!
[self.window setBackgroundColor:[UIColor colorWithPatternImage:background]];!
}	
  

Tương	
  tự	
  hãy	
  dùng	
  	
  [UINaviga9onBar	
  appearance]	
  để	
  thay	
  đổi	
  background	
  của	
  Nav	
  Bar	
  

http://techmaster.vn
Thực hành tại lớp – 12 h hôm sau nộp bài

•  Phần	
  truyền	
  dữ	
  liệu	
  giữa	
  các	
  ViewController	
  sẽ	
  để	
  
một	
  buổi	
  chuyên	
  biệt	
  
•  Bây	
  giờ	
  hãy	
  tạo	
  một	
  ứng	
  dụng	
  :	
  
–  Bán	
  xe	
  đạp	
  và	
  phụ	
  kiện,	
  cửa	
  hàng	
  +	
  bản	
  đồ	
  
–  Tủ	
  sách	
  và	
  xem	
  truyện	
  trực	
  tuyến	
  
–  Cửa	
  hàng	
  café	
  tích	
  điểm	
  cho	
  khách	
  hàng	
  dùng	
  di	
  động	
  
–  Giới	
  thiệu	
  sản	
  phẩm	
  xe	
  máy	
  hãng	
  Honda,	
  Yamaha	
  
http://techmaster.vn
Code	
  thôi	
  các	
  men	
  !	
  
http://techmaster.vn

More Related Content

Viewers also liked

Tìm nền tảng lập trình cho 5 năm tới
Tìm nền tảng lập trình cho 5 năm tớiTìm nền tảng lập trình cho 5 năm tới
Tìm nền tảng lập trình cho 5 năm tớiTechMaster Vietnam
 
Prototyping giao diện sử dụng Expression Blend Sketch Flow
Prototyping giao diện sử dụng Expression Blend Sketch FlowPrototyping giao diện sử dụng Expression Blend Sketch Flow
Prototyping giao diện sử dụng Expression Blend Sketch FlowTechMaster Vietnam
 
Cấu hình Postgresql căn bản trong 20 phút
Cấu hình Postgresql căn bản trong 20 phútCấu hình Postgresql căn bản trong 20 phút
Cấu hình Postgresql căn bản trong 20 phútTechMaster Vietnam
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tếTechMaster Vietnam
 
Cơ sở dữ liệu postgres
Cơ sở dữ liệu postgresCơ sở dữ liệu postgres
Cơ sở dữ liệu postgresTechMaster Vietnam
 
Bài trình bày cho sinh viên Bách Khoa 9/2012
Bài trình bày cho sinh viên Bách Khoa 9/2012Bài trình bày cho sinh viên Bách Khoa 9/2012
Bài trình bày cho sinh viên Bách Khoa 9/2012TechMaster Vietnam
 
iOS design: a case study
iOS design: a case studyiOS design: a case study
iOS design: a case studyJohan Ronsse
 
Designing Mobile Experiences
Designing Mobile ExperiencesDesigning Mobile Experiences
Designing Mobile ExperiencesBrian Fling
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming LanguageGiuseppe Arici
 

Viewers also liked (14)

Phalcon introduction
Phalcon introductionPhalcon introduction
Phalcon introduction
 
Tìm nền tảng lập trình cho 5 năm tới
Tìm nền tảng lập trình cho 5 năm tớiTìm nền tảng lập trình cho 5 năm tới
Tìm nền tảng lập trình cho 5 năm tới
 
Prototyping giao diện sử dụng Expression Blend Sketch Flow
Prototyping giao diện sử dụng Expression Blend Sketch FlowPrototyping giao diện sử dụng Expression Blend Sketch Flow
Prototyping giao diện sử dụng Expression Blend Sketch Flow
 
Postgresql security
Postgresql securityPostgresql security
Postgresql security
 
Minimum Viable Products
Minimum Viable ProductsMinimum Viable Products
Minimum Viable Products
 
Cấu hình Postgresql căn bản trong 20 phút
Cấu hình Postgresql căn bản trong 20 phútCấu hình Postgresql căn bản trong 20 phút
Cấu hình Postgresql căn bản trong 20 phút
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tế
 
Cơ sở dữ liệu postgres
Cơ sở dữ liệu postgresCơ sở dữ liệu postgres
Cơ sở dữ liệu postgres
 
Slide that wins
Slide that winsSlide that wins
Slide that wins
 
Bài trình bày cho sinh viên Bách Khoa 9/2012
Bài trình bày cho sinh viên Bách Khoa 9/2012Bài trình bày cho sinh viên Bách Khoa 9/2012
Bài trình bày cho sinh viên Bách Khoa 9/2012
 
Node.js căn bản
Node.js căn bảnNode.js căn bản
Node.js căn bản
 
iOS design: a case study
iOS design: a case studyiOS design: a case study
iOS design: a case study
 
Designing Mobile Experiences
Designing Mobile ExperiencesDesigning Mobile Experiences
Designing Mobile Experiences
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming Language
 

Similar to iOS Master - Detail & TabBar

Giaó trinh sử dụng Sketchup tiếng việt cho người việt
Giaó trinh sử dụng Sketchup tiếng việt cho người việtGiaó trinh sử dụng Sketchup tiếng việt cho người việt
Giaó trinh sử dụng Sketchup tiếng việt cho người việtmrblonely159
 
06 chuong06sinhgiaodienvachiasedulieu
06 chuong06sinhgiaodienvachiasedulieu06 chuong06sinhgiaodienvachiasedulieu
06 chuong06sinhgiaodienvachiasedulieuThanh Nguyen
 
Hướng dẫn thiết kế web thương mại điện tử với joomla
Hướng dẫn thiết kế web thương mại điện tử với joomlaHướng dẫn thiết kế web thương mại điện tử với joomla
Hướng dẫn thiết kế web thương mại điện tử với joomlaNguyễn Hưng
 
Apollotheme presentation
Apollotheme presentationApollotheme presentation
Apollotheme presentationTien Nguyen
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5Phong Lữ
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về VbSun Down
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUIHa Bogay
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicnataliej4
 
Huong dan thuc hanh tmdt nguyen hong quan v1
Huong dan thuc hanh tmdt nguyen hong quan v1Huong dan thuc hanh tmdt nguyen hong quan v1
Huong dan thuc hanh tmdt nguyen hong quan v1khimomo
 

Similar to iOS Master - Detail & TabBar (10)

Giáo trình sketch up
Giáo trình sketch upGiáo trình sketch up
Giáo trình sketch up
 
Giaó trinh sử dụng Sketchup tiếng việt cho người việt
Giaó trinh sử dụng Sketchup tiếng việt cho người việtGiaó trinh sử dụng Sketchup tiếng việt cho người việt
Giaó trinh sử dụng Sketchup tiếng việt cho người việt
 
06 chuong06sinhgiaodienvachiasedulieu
06 chuong06sinhgiaodienvachiasedulieu06 chuong06sinhgiaodienvachiasedulieu
06 chuong06sinhgiaodienvachiasedulieu
 
Hướng dẫn thiết kế web thương mại điện tử với joomla
Hướng dẫn thiết kế web thương mại điện tử với joomlaHướng dẫn thiết kế web thương mại điện tử với joomla
Hướng dẫn thiết kế web thương mại điện tử với joomla
 
Apollotheme presentation
Apollotheme presentationApollotheme presentation
Apollotheme presentation
 
Về Visual Basic 20 5
Về Visual Basic 20 5Về Visual Basic 20 5
Về Visual Basic 20 5
 
Giáo trình tổng quan về Vb
Giáo trình tổng quan về VbGiáo trình tổng quan về Vb
Giáo trình tổng quan về Vb
 
Lập trình Java GUI
Lập trình Java GUILập trình Java GUI
Lập trình Java GUI
 
Hướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basicHướng dẫn lập trình với visual basic
Hướng dẫn lập trình với visual basic
 
Huong dan thuc hanh tmdt nguyen hong quan v1
Huong dan thuc hanh tmdt nguyen hong quan v1Huong dan thuc hanh tmdt nguyen hong quan v1
Huong dan thuc hanh tmdt nguyen hong quan v1
 

More from TechMaster Vietnam

Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservicesTechMaster Vietnam
 
Chia sẻ kinh nghiệm giảng dạy CNTT
Chia sẻ kinh nghiệm giảng dạy CNTTChia sẻ kinh nghiệm giảng dạy CNTT
Chia sẻ kinh nghiệm giảng dạy CNTTTechMaster Vietnam
 
Manage your project differently
Manage your project differentlyManage your project differently
Manage your project differentlyTechMaster Vietnam
 
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXHướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXTechMaster Vietnam
 
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMaster
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMasterChương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMaster
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMasterTechMaster Vietnam
 
Apple iOS Memory Management - Vietnamese version
Apple iOS Memory Management - Vietnamese versionApple iOS Memory Management - Vietnamese version
Apple iOS Memory Management - Vietnamese versionTechMaster Vietnam
 
Sinh viên CNTT làm gì trong 5 năm tới
Sinh viên CNTT làm gì trong 5 năm tớiSinh viên CNTT làm gì trong 5 năm tới
Sinh viên CNTT làm gì trong 5 năm tớiTechMaster Vietnam
 

More from TechMaster Vietnam (15)

Neural Network from Scratch
Neural Network from ScratchNeural Network from Scratch
Neural Network from Scratch
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
 
Flutter vs React Native 2018
Flutter vs React Native 2018Flutter vs React Native 2018
Flutter vs React Native 2018
 
C đến C++ phần 1
C đến C++ phần 1C đến C++ phần 1
C đến C++ phần 1
 
Control structure in C
Control structure in CControl structure in C
Control structure in C
 
Basic C programming
Basic C programmingBasic C programming
Basic C programming
 
Knex Postgresql Migration
Knex Postgresql MigrationKnex Postgresql Migration
Knex Postgresql Migration
 
Arrowjs.io
Arrowjs.ioArrowjs.io
Arrowjs.io
 
Chia sẻ kinh nghiệm giảng dạy CNTT
Chia sẻ kinh nghiệm giảng dạy CNTTChia sẻ kinh nghiệm giảng dạy CNTT
Chia sẻ kinh nghiệm giảng dạy CNTT
 
Manage your project differently
Manage your project differentlyManage your project differently
Manage your project differently
 
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSXHướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
Hướng dẫn sử dụng CocoaPods trong dự án iOS hoặc MacOSX
 
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMaster
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMasterChương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMaster
Chương trình thực tập chuyên sâu dành cho học viên khóa iOS tại TechMaster
 
Apple iOS Memory Management - Vietnamese version
Apple iOS Memory Management - Vietnamese versionApple iOS Memory Management - Vietnamese version
Apple iOS Memory Management - Vietnamese version
 
Sinh viên CNTT làm gì trong 5 năm tới
Sinh viên CNTT làm gì trong 5 năm tớiSinh viên CNTT làm gì trong 5 năm tới
Sinh viên CNTT làm gì trong 5 năm tới
 
Windows 8 vs android 4
Windows 8 vs android 4Windows 8 vs android 4
Windows 8 vs android 4
 

iOS Master - Detail & TabBar

  • 1. Giao diện Master – Detail Tab Bar trong iOS cuong@techmaster.vn http://techmaster.vn
  • 2. Master – Detail và các biến thể http://techmaster.vn
  • 3. Giao diện master - detail •  Đi  từ  tổng  quan  đến  chi  tiết   •  Màn  hình  tổng  quan  có  thể  là  table  view,  collection   view,  có  chức  năng  tìm  kiếm  hoặc  dạng  phi  chuẩn   •  Màn  hình  chi  tiết  có  nút  Back  hoặc  Close  để  trở  về   màn  hình  chi  tiết   •  Master  -­‐>  Detail  -­‐>  More  Detail  …  nhưng  đừng  quá  sâu   http://techmaster.vn
  • 4. Giao  diện  Master  –  Detail     sử  dụng  Naviga9onBar  chuẩn   của  iOS  UIKit   Chạm  vào  từng  dòng   table  view  để  xem  chi   9ết     http://techmaster.vn
  • 5. Master – Detail (500px) Nút  back  bu*on  và   naviga1on  bar  điển  hình   Tổng  quan   Chi  9ết   http://techmaster.vn
  • 6. Master – Detail (Apple Weather) Chạm  vào  thành  phố   để  xem  chi  9ết   http://techmaster.vn
  • 7. Nút  back  thay   bằng  nút  close   Ứng  dụng  Feedly,  master  –  detail  nhưng  không  dùng  Naviga9on  Bar  chuẩn,  màn  hình  detail   Được  present  modally   http://techmaster.vn
  • 8. Đừng máy móc ! Master:  danh  sách  các  mã  cổ  phiếu   Master  –  Detail  trong  còn  một  màn  hình     Detail:  biểu  đồ  của  mã  cổ  phiếu  được  chọn   http://techmaster.vn
  • 9. Detail:  bản  đồ  vị  trí  thiết  bị  lại  ở  trên   Master:  danh  sách  thiết  bị  ở  dưới   http://techmaster.vn
  • 10. Master-­‐Detail  4  cấp  di  chuyển  nhưng  người  dùng  vẫn  dễ  dùng.  Vì  sao?   http://techmaster.vn
  • 11. Tin  quan  trọng  (featured  news)     Quảng  cáo  ké  vào     Các  mục  trong  master  không  nhất   thiết  lúc  nào  cũng  phải  đều  nhau     Tin  bình  thường   http://techmaster.vn
  • 12. Không  phải  lúc  nào  cũng  dùng  TableView  hoặc  Collec9onView   Ứng  dụng  Paper  FaceBook,  các  chuyên  mục  9n  di  chuyển  bằng   UIScrollView  cùng  Pager  Control  (dãy  các  chấm)   Paper   Facebook   Headline   Tech   Fashion   News  1   News  1   News  1   News  2   News  2   News  2   News  3   News  3   News  3   http://techmaster.vn
  • 13. Tab Bar và các biến thể http://techmaster.vn
  • 14. Chức  năng  các  tab  tương  đương   Tab  giữa  quan  trọng  hơn,  nên  to  dễ  bấm  hơn   http://techmaster.vn
  • 15. Tab  Bar  dùng  để  chia  vùng,  phân  tách  các  chức  năng  không  liên  hệ  với  nhau   Tab  Bar  chứa  Naviga9on  Bar  mà  không  ngược  lại     http://techmaster.vn
  • 16. Facebook  no9fica9on   No9fica9on    (Badget  trong  tab  bar  item)  gây  sự   chú  ý  của  người  dùng  rất  mạnh   http://techmaster.vn
  • 17. Chức  năng  chính  to  dễ  bấm   Ấn  vào  Rotate  hiện  thêm  sub   menu   Sub  menu  có  thể  trượt  ngang     http://techmaster.vn
  • 18. Ứng  dụng  Documents   Customized  Tab  Bar  kết   hợp  cả  sliding  menu   http://techmaster.vn
  • 19. Khi  ứng  dụng  có  quá  nhiều   chức  năng,  không  thể  nhét   vừa  vào  Tab  bar  hãy  sử  dụng   Sliding  Menu  ở  bên  trái.  Ứng   dụng  Trulia     Sliding  Menu  bên  phải  là   thông  9n  bổ  trợ  ít  quan   trọng  hơn  so  với  bên  trái.   Ứng  dụng  Facebook,  danh   sách  Friend   http://techmaster.vn
  • 20. Trulia   Pinterest   Nếu  cần  thêm  lựa  chọn  Sub  Tab   Không  nhất  thiết  dùng  TableView   http://techmaster.vn
  • 21. Thích chưa? Giờ code nhé ! http://techmaster.vn
  • 22. Sử  dụng  StoryBoard  thường  để  tạo  prototype  ứng  dụng   cho  khách  hàng  xem  nhanh,  code  camp…   Không  nên  dùng  cho  ứng  dụng  phức  tạp   http://techmaster.vn
  • 23. Để  nhồi  một  ViewController  vào  trong   Naviga9on  Controller  hoặc  Tab  Bar   Controller   Hãy  dùng  Editor  >  Embed  In  >  …     http://techmaster.vn
  • 24. Các quan hệ segue •  Push:  master  -­‐>  detail   •  Modal:  A  presents  B  modally   •  Custom:  tự  viết  custom  segue   •  Root  View:  Một  Navigation  Controller  luôn   phải  chưa  bên  trong  1  Root  View  Controller   http://techmaster.vn
  • 25. Cách mà Techmaster hay làm •  Tạo  giao  diện  bằng  code   •  Khi  nào  thực  sự  cần  mới  dùng  XIB  hoặc   StoryBoard   Code  để  load   ViewController   từ  StoryBoard   UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Hack" bundle:nil]; ! ! DrinkVC *drinkVC = [storyBoard instantiateViewControllerWithIdentifier:@"DrinkVC"];   http://techmaster.vn
  • 26. Tạo giao diện Một  TabBarController  chứa  3   screen:     •  Coffee  menu:  Nav  chứa  Single  VC   •  Drink  Menu:  Nav  chứa  TableView   •  Map:  Single  VC  chứa  MapKit   http://techmaster.vn
  • 27. - (BOOL)application:(UIApplication *)application ! didFinishLaunchingWithOptions:(NSDictionary *)launchOptions! {! self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];! ! MainVC *mainVC = [[MainVC alloc] initWithNibName:@"MainVC" bundle:nil];! UINavigationController *coffeeNav = [[UINavigationController alloc] ! initWithRootViewController:mainVC];! ! UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Hack" bundle:nil];! DrinkVC *drinkVC = [storyBoard instantiateViewControllerWithIdentifier:@"DrinkVC" ! UINavigationController *drinkNav = [[UINavigationController alloc] ! initWithRootViewController:drinkVC];! ! MapVC *mapVC = [[MapVC alloc] initWithNibName:@"MapVC" bundle:nil];! ! UITabBarController *tabBarController = [UITabBarController new];! tabBarController.viewControllers = @[coffeeNav, drinkNav, mapVC];! self.window.rootViewController = tabBarController;! ! [self.window makeKeyAndVisible];! return YES;! http://techmaster.vn }  
  • 28. UITabBarItem coffeeNav.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Coffee" ! image:[UIImage imageNamed:@"coffee"] ! selectedImage:[UIImage imageNamed:@"coffeeSelected"]];! ! coffeeNav.tabBarItem.badgeValue = @"3";   http://techmaster.vn
  • 29. Các kỹ thuật quan trọng •  Thay  đổi  giao  diện  Navigation  Bar  và  Tab  Bar   •  Truyền  dữ  liệu  qua  lại  các  ViewControllers   –  Singleton:  dữ  liệu  dùng  chung  và  duy  nhất,  vd:  Setting   –  Delegate:  ViewController  cần  adopt  Protocol   –  Block:  cách  này  hay  hơn  Delegate   –  Local  Notification  –  Observer:  dùng  để  bắt  sự  kiện  khi  dữ   liệu  thay  đổi   http://techmaster.vn
  • 31. Thay đổi background của TabBar - (void)customizeInterface! {! UIImage *tabBarBackground = [UIImage imageNamed:@"tabbar.png"];! [[UITabBar appearance] setBackgroundImage:tabBarBackground];! [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"selection-tab.png"]];! UIImage *background = [UIImage imageNamed:@"background.jpg"];! [self.window setBackgroundColor:[UIColor colorWithPatternImage:background]];! }   Tương  tự  hãy  dùng    [UINaviga9onBar  appearance]  để  thay  đổi  background  của  Nav  Bar   http://techmaster.vn
  • 32. Thực hành tại lớp – 12 h hôm sau nộp bài •  Phần  truyền  dữ  liệu  giữa  các  ViewController  sẽ  để   một  buổi  chuyên  biệt   •  Bây  giờ  hãy  tạo  một  ứng  dụng  :   –  Bán  xe  đạp  và  phụ  kiện,  cửa  hàng  +  bản  đồ   –  Tủ  sách  và  xem  truyện  trực  tuyến   –  Cửa  hàng  café  tích  điểm  cho  khách  hàng  dùng  di  động   –  Giới  thiệu  sản  phẩm  xe  máy  hãng  Honda,  Yamaha   http://techmaster.vn
  • 33. Code  thôi  các  men  !   http://techmaster.vn