Xcode 6 veya üstü sürümlerde nasıl kategori oluşturabilirim?


318

Ben UIColorXcode 6 kullanarak benim app üzerinde bir kategori oluşturmak istiyorum .

Xcode 6'da kategori oluşturma seçeneği var mı?


Xcode 6'dan önce nasıl yaptın?
holex

Sadece bir kaynak dosyaya yazın: @interface UIColor(MyCategory) ... etc
JeremyP

8
Neden bir cevap seçmiyorsunuz? Bunu yapmamak, çözümü arayan diğer kullanıcılar için zaman kaybettirir.
Tommie C.16

Swift kullanıyorsanız, Kategori yerine bir Uzantı oluşturabilirsiniz. Nasıl yapılacağı için bu cevaba bakınız .
Suresi

Yanıtlar:


745

Unutmadılar. Kimseye söylemeden sadece taşıdılar.

  1. Tıklayın File-> New->File

  2. Seç Objective-C filealtında Sourcesyer iOSveya Mac OSsırasıyla ve İleri'yi

  3. Şimdi altında File Type:seçeneklerinden birini Category, Protocolya daExtension

PS. Altında File Name:her ne ya olacak burada yazın Category, Protocolya da Extensionadı.


13
Bu çok kafa karıştırıcı.
Ben Sinclair

6
Swift'i eklemek için acele ettiler ve Objective-C altında her şeyi gizlediler ya da sanırım yaptılar. Şahsen Swift'in neden eklendiğini anlamıyorum, Objective-C bunu öğrendikten sonra çok güzel ve etkileyici bir dildir ... C'nin üzerindeki nesneler ... Perrrfect
unom

8
Heh, Objective-C FileXCode 6 tarafından verilen açıklama, açıklamam yerine "Boş Objective-C dosyası", "eski, hiç boş olmayan Objective-C dosyalarından biri" olurdu. beni oldukça güzel attı!
Benjohn

@unmircea Bu tür faydalı bilgileri gönderdiğiniz için teşekkür ederiz. Apple'a: Bu aptalca!
mbm29414

1
Unutmadılar. Kimseye söylemeden sadece taşıdılar. Genel olarak Apple belgelerinin berbat seviyesini ve en sık olarak toplam dokümantasyon eksikliğini göz önünde bulundurarak tipik olanı.
Ördek

77

CategoryBaseClass + CategoryName.m / .h oluşturmak için :

  1. Dosya → Yeni → Dosya ... veya ⌘N kullanın .
  2. Objective-C File seçeneğini seçin .

resim açıklamasını buraya girin

  1. Kategori adını yazın, Dosya Türü: Kategori'yi seçin ve ardından temel sınıfı seçin.

resim açıklamasını buraya girin

  1. Kategori oluşturmak için akışı tamamlayın.


19

Xcode6-Beta5 güncellemesi

Arayüz artık değişti ve doğrudan Yeni> Dosya penceresinden bir Kategori eklemek mümkündür.

Unmircea'nın cevabına bakınız .


Kendime şaşırdım ve sanırım Swift yüzünden eski güzel Objective-C'yi unuttular .

İki seçeneğiniz var:

  1. Kategori adıyla bir Objective-C sınıfı oluşturun UIView+Powerups, ardından arabirimi kategorinin biriyle eşleşecek şekilde el ile değiştirin. Kategori arabirimi ve uygulaması için snippet'in hala çalıştığını unutmayın, bu yüzden bu çok kolay: type @interface-categoryve @implementation-category.

  2. Xcode 5'ten içe aktarın! Bu komutu kullanın:

    cp -r /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Cocoa\ Touch/Objective-C\ category.xctemplate /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Source/

    Xcode 6'yı kapatıp yeniden açın, yeni dosya için sihirbazda "Objective-C Category" i bulun.


2
Bilginize: Daha sonraki bir beta sürümündeyseniz, satırdaki Xcode-beta.app dosyasını Xcode6-betaX.app olarak değiştirin; burada X, beta numarasıdır.
Alex Alex

1
Yanlış! Doğru cevap için aşağıdaki unmircea tarafından verilen cevaba göz atın - gitmedi, yeni taşındı ..
Jay

12

Xcode 6 beta'da kategori oluşturmak için önceden tanımlı bir şablon yoktur (şimdilik), bu seçeneği daha sonra ekleyebilirler. Etrafında bir çalışma olarak (ClassName + CategoryName) Cocoa Touch Classadlı UIImage+Additions( uygun değil biliyorum ama başka bir şekilde ) oluşturabilir ve onun arabirimi ve uygulama gibi bir şey geçersiz kılabilirsiniz

UIImage + Additions.h

#import <UIKit/UIKit.h>

@interface UIImage(Additions)

+(void)testMethod;

@end 

UIImage + Additions.m

#import "UIImage+Additions.h"

@implementation UIImage (Additions)

+(void)testMethod
{

}

@end

Düzenle
Bu yanıt, Xcode 6 beta sürümünde kategori oluşturmanın bir yolunu bulmadan önce yazılmıştır. Kategori oluşturmanın doğru yolu için unmircea'nın cevabını kontrol edin


Apple Objective-c Kategori, Objective-c sınıfı uzantısı, Objective-c Protokolleri şablonları eklemeyi unuttum ....
Yalamandarao

Çoğaltmak istiyorsanız # 17627118 hata raporu oluşturdum.
David Pettigrew

XCode 6'nın son sürümü yerleşik kategori desteğine sahip olduğundan, geçici çözüme gerek yok.
Zorayr

@Zorayr Son Xcode 6 sürümünden önce cevaplandı ve etrafındaki çalışma da yanlış değil. Sadece oy verme.
Anil Varghese

6

Unmircea'nın fantastik cevabını genişleterek : özel bir UIColorpalet uygulamak için nasıl özel bir kategori oluşturacağınızı, bir kategori oluşturabilirsiniz.

Eğer (bu örnekte, bir var senin kategorisini oluşturduktan sonra kategori olarak adlandırılan ColorPalettebir sınıfın UIColor ), Bir başlık ve bir uygulama dosyası olacak.

UIColor + ColorPalette.h

#import <UIKit/UIKit.h>

@interface UIColor (ColorPalette)

// Your custom colors

+ (UIColor *) customRedButtonColor;
+ (UIColor *) customGreenButtonColor;

@end

UIColor + ColorPalette.m

#import "UIColor+ColorPalette.h"

@implementation UIColor (ColorPalette)

// Button Colors

+ (UIColor *) customRedButtonColor {
    return [UIColor colorWithRed:178.0/255.0 green:25.0/255.0 blue:0.0/255.0 alpha:1.0];
}

+ (UIColor *) customGreenButtonColor {
    return [UIColor colorWithRed:20.0/255.0 green:158.0/255.0 blue:96.0/255.0 alpha:1.0];
}

Özel renk paletinizi kullanmak için, başlığı özel renklerinizi uygulamak istediğiniz sınıfa aktarmanız yeterlidir:

#import "UIColor+ColorPalette.h"

ve size verecek bir standart renk gibi renk diyoruz redColor, greenColorya blueColor.

Özel bir palet oluşturma konusunda biraz daha ayrıntılı bir tartışmanın bağlantısı .

Ayrıca, özel renk değerlerini seçmenize yardımcı olacak bir araç


1
Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
Jasper

3

Sadece Xcode'un eski bir sürümünden istediğiniz şablonları kopyalayabilirsiniz, bunun için bir kabuk komut dosyası hazırladım: https://github.com/cDigger/AddMissingTemplates


Bu çalışan bir çözüm olsa da, muhtemelen Xcode'da yerleşik kategori desteğini kullanmak daha iyi bir fikirdir - bu şekilde şablonlar her zaman güncel olacaktır.
Zorayr

1

NSString + Helper gibi "uzantı" dosyası oluşturabilirsiniz:

1: File  New  File... or use N.

2: Name NSString+Helper (For example)

3: create the file

4: Remove the code from file

5: add 

extension NSString {


}

Bitti. kodlamanın tadını çıkar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.